aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Packets/ByteBuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared/Packets/ByteBuffer.h')
-rw-r--r--src/server/shared/Packets/ByteBuffer.h24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h
index 6b09e4ab3cc..4fc3a84e564 100644
--- a/src/server/shared/Packets/ByteBuffer.h
+++ b/src/server/shared/Packets/ByteBuffer.h
@@ -74,11 +74,13 @@ class TC_SHARED_API ByteBuffer
_storage.reserve(reserve);
}
- ByteBuffer(ByteBuffer&& buf) : _rpos(buf._rpos), _wpos(buf._wpos),
- _storage(std::move(buf._storage)) { }
+ ByteBuffer(ByteBuffer&& buf) : _rpos(buf._rpos), _wpos(buf._wpos), _storage(std::move(buf._storage))
+ {
+ buf._rpos = 0;
+ buf._wpos = 0;
+ }
- ByteBuffer(ByteBuffer const& right) : _rpos(right._rpos), _wpos(right._wpos),
- _storage(right._storage) { }
+ ByteBuffer(ByteBuffer const& right) : _rpos(right._rpos), _wpos(right._wpos), _storage(right._storage) { }
ByteBuffer(MessageBuffer&& buffer);
@@ -94,6 +96,20 @@ class TC_SHARED_API ByteBuffer
return *this;
}
+ ByteBuffer& operator=(ByteBuffer&& right)
+ {
+ if (this != &right)
+ {
+ _rpos = right._rpos;
+ right._rpos = 0;
+ _wpos = right._wpos;
+ right._wpos = 0;
+ _storage = std::move(right._storage);
+ }
+
+ return *this;
+ }
+
virtual ~ByteBuffer() { }
void clear()