Change GET/GBIT32 macros to explicitly cast final result to u32int.
Otherwise, the type of the expression will be int, and if written to a uvlong (or just a ulong on most 64-bit systems), it will be sign-extended. This was going on in drawfcall with Mouse.msec, which is declared as a ulong. This fix assumes that the protocols only send unsigned numbers, which is true.
This commit is contained in:
parent
3a19470202
commit
9a5678a8a9
2 changed files with 2 additions and 2 deletions
|
|
@ -50,7 +50,7 @@ struct Fcall
|
|||
|
||||
#define GBIT8(p) ((p)[0])
|
||||
#define GBIT16(p) ((p)[0]|((p)[1]<<8))
|
||||
#define GBIT32(p) ((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24))
|
||||
#define GBIT32(p) ((u32int)((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24)))
|
||||
#define GBIT64(p) ((u32int)((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24)) |\
|
||||
((vlong)((p)[4]|((p)[5]<<8)|((p)[6]<<16)|((p)[7]<<24)) << 32))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue