diff --git a/src/Serializer.cpp b/src/Serializer.cpp index ac3c029ba..01073bba6 100644 --- a/src/Serializer.cpp +++ b/src/Serializer.cpp @@ -81,28 +81,31 @@ int Serializer::addRaw(const void *ptr, int len) bool Serializer::get16(uint16& o, int offset) const { if ((offset + 2) > mData.size()) return false; - o = mData.at(offset++); - o <<= 8; o |= mData.at(offset); + unsigned char *ptr = &mData[offset]; + o = *ptr++; o <<= 8; o |= *ptr; return true; } bool Serializer::get32(uint32& o, int offset) const { if ((offset + 4) > mData.size()) return false; - o=mData.at(offset++); - o<<=8; o |= mData.at(offset++); o <<= 8; o |= mData.at(offset++); - o<<=8; o |= mData.at(offset); + unsigned char *ptr = &mData[offset]; + o = *ptr++; + o <<= 8; o |= *ptr++; + o <<= 8; o |= *ptr++; + o <<= 8; o |= *ptr; return true; } bool Serializer::get64(uint64& o, int offset) const { if ((offset + 8) > mData.size()) return false; - o=mData.at(offset++); - o<<=8; o|= mData.at(offset++); o <<= 8; o |= mData.at(offset++); - o<<=8; o|= mData.at(offset++); o <<= 8; o |= mData.at(offset++); - o<<=8; o|= mData.at(offset++); o <<= 8; o |= mData.at(offset++); - o<<=8; o|= mData.at(offset); + unsigned char *ptr = &mData[offset]; + o = *ptr++; + o <<= 8; o |= *ptr++; o <<= 8; o |= *ptr++; + o <<= 8; o |= *ptr++; o <<= 8; o |= *ptr++; + o <<= 8; o |= *ptr++; o <<= 8; o |= *ptr++; + o <<= 8; o |= *ptr; return true; }