Luca Barbato <[email protected]> writes: > On 12/12/11 15:54, Gaurav Narula wrote: >> --- >> libavcodec/kmvc.c | 82 >> ++++++++++++++++++++++++++++++++++++++++++---------- >> 1 files changed, 66 insertions(+), 16 deletions(-) >> >> diff --git a/libavcodec/kmvc.c b/libavcodec/kmvc.c >> index 07ca194..7f63699 100644 >> --- a/libavcodec/kmvc.c >> +++ b/libavcodec/kmvc.c >> @@ -57,17 +57,21 @@ typedef struct BitBuf { >> >> #define kmvc_init_getbits(bb, src) bb.bits = 7; bb.bitbuf = *src++; >> >> -#define kmvc_getbit(bb, src, res) {\ >> +#define kmvc_getbit(bb, src, src_end, res) {\ >> res = 0; \ >> if (bb.bitbuf& (1<< bb.bits)) res = 1; \ >> bb.bits--; \ >> if(bb.bits == -1) { \ >> + if (src>= src_end) { \ >> + av_log(ctx->avctx, AV_LOG_ERROR, "Data overrun\n"); \ >> + return AVERROR_INVALIDDATA; \ >> + } \ >> bb.bitbuf = *src++; \ >> bb.bits = 7; \ >> } \ >> } > > res == 1 is an error condition that always triggers a return, am I > wrong?
res is the bit that was read. The real question is why this decoder isn't using get_bits.h. -- Måns Rullgård [email protected] _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
