diff --git a/src/bitstream.c b/src/bitstream.c index 2d426758..bc3218b6 100644 --- a/src/bitstream.c +++ b/src/bitstream.c @@ -46,6 +46,13 @@ skip_bits(bitstream_t *bs, int num) bs->offset += num; } +int +bs_eof(const bitstream_t *bs) +{ + return bs->offset >= bs->len; +} + + unsigned int read_bits(bitstream_t *bs, int num) { @@ -76,7 +83,7 @@ read_golomb_ue(bitstream_t *bs) { int b, lzb = -1; - for(b = 0; !b; lzb++) + for(b = 0; !b && !bs_eof(bs); lzb++) b = read_bits1(bs); return (1 << lzb) - 1 + read_bits(bs, lzb); diff --git a/src/bitstream.h b/src/bitstream.h index 5aa468bf..8718e80b 100644 --- a/src/bitstream.h +++ b/src/bitstream.h @@ -44,4 +44,6 @@ unsigned int remaining_bits(bitstream_t *gb); void put_bits(bitstream_t *bs, int val, int num); +int bs_eof(const bitstream_t *bs); + #endif /* BITSTREAM_H_ */