@@ -119,22 +119,31 @@ inline size_t readBytes(UnsignedByte *dest, size_t destLen, NetPacketBuf src)
119119inline size_t readStringWithoutNull (UnicodeString &str, size_t maxStrLen, NetPacketBuf src)
120120{
121121 const size_t strLen = min (maxStrLen, src.size () / sizeof (WideChar));
122- const size_t readLen = strLen * sizeof (WideChar);
123- WideChar *strBuf = str.getBufferForRead (strLen);
124- memcpy (strBuf, src.data (), readLen);
125- strBuf[strLen] = 0 ;
126- return readLen;
122+ const size_t cpyLen = strLen * sizeof (WideChar);
123+
124+ if (strLen > 0 )
125+ {
126+ WideChar *strBuf = str.getBufferForRead (strLen);
127+ memcpy (strBuf, src.data (), cpyLen);
128+ strBuf[strLen] = 0 ;
129+ }
130+ return cpyLen;
127131}
128132
129133inline size_t readStringWithNull (AsciiString &str, size_t maxStrLen, NetPacketBuf src)
130134{
131135 const size_t realStrLen = strnlen (reinterpret_cast <const char *>(src.data ()), src.size ());
132136 const size_t usedStrLen = min (realStrLen, maxStrLen);
133- const size_t readLen = usedStrLen;
134- char *strBuf = str.getBufferForRead (usedStrLen);
135- memcpy (strBuf, src.data (), readLen);
136- strBuf[usedStrLen] = 0 ;
137- return realStrLen + 1 ;
137+ const size_t realCpyLen = realStrLen * sizeof (char );
138+ const size_t usedCpyLen = usedStrLen * sizeof (char );
139+
140+ if (usedStrLen > 0 )
141+ {
142+ char *strBuf = str.getBufferForRead (usedStrLen);
143+ memcpy (strBuf, src.data (), usedCpyLen);
144+ strBuf[usedStrLen] = 0 ;
145+ }
146+ return realCpyLen + sizeof (char );
138147}
139148
140149template <typename T>
0 commit comments