diff options
| author | Shauren <shauren.trinity@gmail.com> | 2014-10-20 01:33:10 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2014-10-20 01:33:10 +0200 |
| commit | 484eae18ea1310f0b85612adb8fa9a83d782ac89 (patch) | |
| tree | 0295a3122fbe1f2a982249100df602d035bdaf73 /src/server/shared/Packets/ByteBuffer.h | |
| parent | 5e5643015692aa5196a0550c318a6c35763bd832 (diff) | |
| parent | 51095ad39b253b83632e8de954bf7a5e30aa9944 (diff) | |
Merge pull request #13361 from Sovak/602
Core/NetworkIO: *Fixed basic auth packets
Diffstat (limited to 'src/server/shared/Packets/ByteBuffer.h')
| -rw-r--r-- | src/server/shared/Packets/ByteBuffer.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index d65b6c58a51..de871c5e6df 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -133,6 +133,15 @@ class ByteBuffer _curbitval = 0; } + void ResetBitPos() + { + if (_bitpos > 7) + return; + + _bitpos = 8; + _curbitval = 0; + } + bool WriteBit(uint32 bit) { --_bitpos; @@ -154,8 +163,8 @@ class ByteBuffer ++_bitpos; if (_bitpos > 7) { - _bitpos = 0; _curbitval = read<uint8>(); + _bitpos = 0; } return ((_curbitval >> (7-_bitpos)) & 1) != 0; @@ -442,11 +451,14 @@ class ByteBuffer { if (_rpos + skip > size()) throw ByteBufferPositionException(false, _rpos, skip, size()); + + ResetBitPos(); _rpos += skip; } template <typename T> T read() { + ResetBitPos(); T r = read<T>(_rpos); _rpos += sizeof(T); return r; @@ -465,6 +477,8 @@ class ByteBuffer { if (_rpos + len > size()) throw ByteBufferPositionException(false, _rpos, len, size()); + + ResetBitPos(); std::memcpy(dest, &_storage[_rpos], len); _rpos += len; } |
