aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2019-06-20 19:40:30 +0300
committerLasse Collin <lasse.collin@tukaani.org>2019-12-31 22:19:18 +0200
commited1a9d33984a3a37ae9a775a46859850d98ea4d0 (patch)
tree452fc6e1ea0cf9851268df211deaddb4397eabaa /src/common
parentUpdate THANKS. (diff)
downloadxz-ed1a9d33984a3a37ae9a775a46859850d98ea4d0.tar.xz
tuklib_integer: Fix usage of conv macros.
Use a temporary variable instead of e.g. conv32le(unaligned_read32ne(buf)) because the macro can evaluate its argument multiple times.
Diffstat (limited to '')
-rw-r--r--src/common/tuklib_integer.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h
index 1524c61e..d5c813c0 100644
--- a/src/common/tuklib_integer.h
+++ b/src/common/tuklib_integer.h
@@ -413,7 +413,8 @@ static inline uint16_t
unaligned_read16be(const uint8_t *buf)
{
#if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS)
- return conv16be(unaligned_read16ne(buf));
+ uint16_t num = unaligned_read16ne(buf);
+ return conv16be(num);
#else
uint16_t num = ((uint16_t)buf[0] << 8) | (uint16_t)buf[1];
return num;
@@ -425,7 +426,8 @@ static inline uint16_t
unaligned_read16le(const uint8_t *buf)
{
#if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS)
- return conv16le(unaligned_read16ne(buf));
+ uint16_t num = unaligned_read16ne(buf);
+ return conv16le(num);
#else
uint16_t num = ((uint16_t)buf[0]) | ((uint16_t)buf[1] << 8);
return num;
@@ -437,7 +439,8 @@ static inline uint32_t
unaligned_read32be(const uint8_t *buf)
{
#if defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS)
- return conv32be(unaligned_read32ne(buf));
+ uint32_t num = unaligned_read32ne(buf);
+ return conv32be(num);
#else
uint32_t num = (uint32_t)buf[0] << 24;
num |= (uint32_t)buf[1] << 16;
@@ -452,7 +455,8 @@ static inline uint32_t
unaligned_read32le(const uint8_t *buf)
{
#if !defined(WORDS_BIGENDIAN) || defined(TUKLIB_FAST_UNALIGNED_ACCESS)
- return conv32le(unaligned_read32ne(buf));
+ uint32_t num = unaligned_read32ne(buf);
+ return conv32le(num);
#else
uint32_t num = (uint32_t)buf[0];
num |= (uint32_t)buf[1] << 8;