diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/shared/Packets/ByteBuffer.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index 13e96833c82..069b783a537 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -498,13 +498,16 @@ class ByteBuffer std::string ReadString(uint32 length) { + if (_rpos + length > size()) + throw ByteBufferPositionException(false, _rpos, length, size()); + if (!length) return std::string(); - char* buffer = new char[length + 1]; - read((uint8*)buffer, length); - std::string retval = buffer; - delete[] buffer; - return retval; + + ResetBitPos(); + std::string str((char const*)&_storage[_rpos], length); + _rpos += length; + return str; } //! Method for writing strings that have their length sent separately in packet |
