aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/shared/Packets/ByteBuffer.h13
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