summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cesar/lib/src/bitstream.c14
-rw-r--r--cesar/lib/test/bitstream/src/test_bitstream.c3
2 files changed, 14 insertions, 3 deletions
diff --git a/cesar/lib/src/bitstream.c b/cesar/lib/src/bitstream.c
index b7d2263e47..bceafe565a 100644
--- a/cesar/lib/src/bitstream.c
+++ b/cesar/lib/src/bitstream.c
@@ -487,9 +487,19 @@ bitstream_access_64 (bitstream_t *ctx, u64 *value, uint nb_bits)
|| ctx->direction == BITSTREAM_WRITE);
dbg_assert (value);
if (ctx->direction == BITSTREAM_READ)
- *value = bitstream_read_large (ctx, nb_bits);
+ {
+ if (nb_bits > 32)
+ *value = bitstream_read_large (ctx, nb_bits);
+ else
+ *value = bitstream_read (ctx, nb_bits);
+ }
else
- bitstream_write_large (ctx, *value, nb_bits);
+ {
+ if (nb_bits > 32)
+ bitstream_write_large (ctx, *value, nb_bits);
+ else
+ bitstream_write (ctx, *value, nb_bits);
+ }
}
uint
diff --git a/cesar/lib/test/bitstream/src/test_bitstream.c b/cesar/lib/test/bitstream/src/test_bitstream.c
index ea4b4968b3..ac55d618a2 100644
--- a/cesar/lib/test/bitstream/src/test_bitstream.c
+++ b/cesar/lib/test/bitstream/src/test_bitstream.c
@@ -170,7 +170,8 @@ bitstream_basic_test_case (test_t t)
bitstream_direction_t dir;
u8 a, c;
u16 b, d;
- u32 e, f;
+ u32 e;
+ u64 f; /* Should also work if variable is too big. */
/* Patterns which some part should not be clobbered. */
ws[0] = 0xa4a3a2a1;
ws[1] = 0xabababab;