get rid of undefined behavior regarding order of evaluation
This commit is contained in:
parent
cee447066f
commit
b375c53c7d
@ -1,7 +1,8 @@
|
|||||||
#include "parse.h"
|
#include "parse.h"
|
||||||
|
|
||||||
uint16_t prs_u16(struct bytestream* bs) {
|
uint16_t prs_u16(struct bytestream* bs) {
|
||||||
return bs_get(bs) | (bs_get(bs) << 8);
|
unsigned char c = bs_get(bs);
|
||||||
|
return c | (bs_get(bs) << 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNITTEST
|
#ifdef UNITTEST
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#include "parse.h"
|
#include "parse.h"
|
||||||
|
|
||||||
uint16_t prs_u16_big(struct bytestream* bs) {
|
uint16_t prs_u16_big(struct bytestream* bs) {
|
||||||
return (bs_get(bs) << 8) | bs_get(bs);
|
uint16_t x = bs_get(bs) << 8;
|
||||||
|
return x | bs_get(bs);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNITTEST
|
#ifdef UNITTEST
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
#include "parse.h"
|
#include "parse.h"
|
||||||
|
|
||||||
uint32_t prs_u32(struct bytestream* bs) {
|
uint32_t prs_u32(struct bytestream* bs) {
|
||||||
return bs_get(bs) | (bs_get(bs) << 8) | (bs_get(bs) << 16) | (bs_get(bs) << 24);
|
uint32_t x = bs_get(bs);
|
||||||
|
x |= bs_get(bs) << 8;
|
||||||
|
x |= bs_get(bs) << 16;
|
||||||
|
return x | (bs_get(bs) << 24);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNITTEST
|
#ifdef UNITTEST
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
#include "parse.h"
|
#include "parse.h"
|
||||||
|
|
||||||
uint32_t prs_u32_big(struct bytestream* bs) {
|
uint32_t prs_u32_big(struct bytestream* bs) {
|
||||||
return (bs_get(bs) << 24) | (bs_get(bs) << 16) | (bs_get(bs) << 8) | bs_get(bs);
|
uint32_t x = bs_get(bs) << 24;
|
||||||
|
x |= bs_get(bs) << 16;
|
||||||
|
x |= bs_get(bs) << 8;
|
||||||
|
return x | bs_get(bs);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UNITTEST
|
#ifdef UNITTEST
|
||||||
|
Loading…
x
Reference in New Issue
Block a user