From: David Brownell Date: Mon, 16 Nov 2009 22:50:07 +0000 (-0800) Subject: binarybuffer: regression fix X-Git-Tag: v0.4.0-rc1~563 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=b6e0f2e1c32930b10403d26d39e71225573bcba9 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 --- diff --git a/src/helper/binarybuffer.h b/src/helper/binarybuffer.h index 460d0178ad..6275eaf1e9 100644 --- a/src/helper/binarybuffer.h +++ b/src/helper/binarybuffer.h @@ -41,7 +41,8 @@ static inline void buf_set_u32(void *_buffer, unsigned first, unsigned num, uint32_t value) { - char *buffer = (char *)_buffer; + uint8_t *buffer = (uint8_t *)_buffer; + if ((num == 32) && (first == 0)) { buffer[3] = (value >> 24) & 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, unsigned first, unsigned num) { - char *buffer = (char *)_buffer; + uint8_t *buffer = (uint8_t *)_buffer; + if ((num == 32) && (first == 0)) { return (((uint32_t)buffer[3]) << 24) | (((uint32_t)buffer[2]) << 16) |