From 2f368984094181f2aa9b1ae1c73ce182469e5037 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 23 Oct 2014 18:11:42 +0200 Subject: Core/Misc: Optimized ByteBuffer::ReadString --- src/server/shared/Packets/ByteBuffer.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/server/shared/Packets') 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 -- cgit v1.2.3