From 41d075b01af5e26e5dd46bd5afdcce349435d26e Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 19 Dec 2024 19:45:58 +0100 Subject: Core/PacketIO: Read directly into output variable for numeric ByteBuffer::operator>> overloads (cherry picked from commit 5a1fe849783d0a9b41ce77eca565f3cfc2dfb197) --- src/server/shared/Packets/ByteBuffer.cpp | 4 ++-- src/server/shared/Packets/ByteBuffer.h | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/server/shared/Packets/ByteBuffer.cpp b/src/server/shared/Packets/ByteBuffer.cpp index a575e52bc1e..994cd371968 100644 --- a/src/server/shared/Packets/ByteBuffer.cpp +++ b/src/server/shared/Packets/ByteBuffer.cpp @@ -41,7 +41,7 @@ ByteBufferInvalidValueException::ByteBufferInvalidValueException(char const* typ ByteBuffer& ByteBuffer::operator>>(float& value) { - value = read(); + read(&value, 1); if (!std::isfinite(value)) throw ByteBufferInvalidValueException("float", "infinity"); return *this; @@ -49,7 +49,7 @@ ByteBuffer& ByteBuffer::operator>>(float& value) ByteBuffer& ByteBuffer::operator>>(double& value) { - value = read(); + read(&value, 1); if (!std::isfinite(value)) throw ByteBufferInvalidValueException("double", "infinity"); return *this; diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index 0f9d3f753d3..d4aeb2e5d80 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -320,50 +320,50 @@ class TC_SHARED_API ByteBuffer ByteBuffer& operator>>(uint8& value) { - value = read(); + read(&value, 1); return *this; } ByteBuffer& operator>>(uint16& value) { - value = read(); + read(&value, 1); return *this; } ByteBuffer& operator>>(uint32& value) { - value = read(); + read(&value, 1); return *this; } ByteBuffer& operator>>(uint64& value) { - value = read(); + read(&value, 1); return *this; } //signed as in 2e complement ByteBuffer& operator>>(int8& value) { - value = read(); + read(&value, 1); return *this; } ByteBuffer& operator>>(int16& value) { - value = read(); + read(&value, 1); return *this; } ByteBuffer& operator>>(int32& value) { - value = read(); + read(&value, 1); return *this; } ByteBuffer& operator>>(int64& value) { - value = read(); + read(&value, 1); return *this; } -- cgit v1.2.3