diff options
author | Thorvald Natvig <slicer@users.sourceforge.net> | 2007-07-19 21:35:34 +0400 |
---|---|---|
committer | Thorvald Natvig <slicer@users.sourceforge.net> | 2007-07-19 21:35:34 +0400 |
commit | 62dbc00a2139e142c1030d7a51d4dfaaf78637c5 (patch) | |
tree | be6ffe31288f38b03181602ccc4524a3e0884ea4 /src/PacketDataStream.h | |
parent | 3621a6dda98f9ad29335e558b326c688381b1d47 (diff) |
sPlayerId => uiSession
git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@637 05730e5d-ab1b-0410-a4ac-84af385074fa
Diffstat (limited to 'src/PacketDataStream.h')
-rw-r--r-- | src/PacketDataStream.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/PacketDataStream.h b/src/PacketDataStream.h index 3e801dbba..8084392f9 100644 --- a/src/PacketDataStream.h +++ b/src/PacketDataStream.h @@ -138,9 +138,15 @@ class PacketDataStream { quint64 i = value; if ((i & 0x8000000000000000LL) && (~i < 0x100000000LL)) { - // Sign shortcut - append(0xF8); + // Signed number. i = ~i; + if (i <= 0x3) { + // Shortcase for -1 to -4 + append(0xFC | i); + return *this; + } else { + append(0xF8); + } } if (i < 0x80) { // Need top bit clear @@ -186,7 +192,7 @@ class PacketDataStream { quint32 v = next(); bool invert = false; if ((v & 0xF0) == 0xF0) { - switch (v) { + switch (v & 0xFC) { case 0xF0: i=next() << 24 | next() << 16 | next() << 8 | next(); return *this; @@ -197,6 +203,10 @@ class PacketDataStream { invert = true; v = next(); break; + case 0xFC: + i=v & 0x03; + i = ~i; + return *this; default: ok = false; i = 0; |