binarybuffer: regression fix
The "improve inline binarybuffer helpers" mis-handled bytes with the high bit set; treat them as unsigned, not signed. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
parent
66300d5966
commit
b6e0f2e1c3
|
@ -41,7 +41,8 @@
|
||||||
static inline void buf_set_u32(void *_buffer,
|
static inline void buf_set_u32(void *_buffer,
|
||||||
unsigned first, unsigned num, uint32_t value)
|
unsigned first, unsigned num, uint32_t value)
|
||||||
{
|
{
|
||||||
char *buffer = (char *)_buffer;
|
uint8_t *buffer = (uint8_t *)_buffer;
|
||||||
|
|
||||||
if ((num == 32) && (first == 0)) {
|
if ((num == 32) && (first == 0)) {
|
||||||
buffer[3] = (value >> 24) & 0xff;
|
buffer[3] = (value >> 24) & 0xff;
|
||||||
buffer[2] = (value >> 16) & 0xff;
|
buffer[2] = (value >> 16) & 0xff;
|
||||||
|
@ -69,7 +70,8 @@ static inline void buf_set_u32(void *_buffer,
|
||||||
static inline uint32_t buf_get_u32(const void *_buffer,
|
static inline uint32_t buf_get_u32(const void *_buffer,
|
||||||
unsigned first, unsigned num)
|
unsigned first, unsigned num)
|
||||||
{
|
{
|
||||||
char *buffer = (char *)_buffer;
|
uint8_t *buffer = (uint8_t *)_buffer;
|
||||||
|
|
||||||
if ((num == 32) && (first == 0)) {
|
if ((num == 32) && (first == 0)) {
|
||||||
return (((uint32_t)buffer[3]) << 24) |
|
return (((uint32_t)buffer[3]) << 24) |
|
||||||
(((uint32_t)buffer[2]) << 16) |
|
(((uint32_t)buffer[2]) << 16) |
|
||||||
|
|
Loading…
Reference in New Issue