bytestream2: set the reader to the end when reading more than available
This prevents possible infinite loops with the calling code along the lines of while (bytestream2_get_bytes_left()) { ... }, where the reader does not advance. CC: libav-stable@libav.org (cherry picked from commit 86eee85daddb682fa072c2e2657c90a514b855e3) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
0df814cf97
commit
7db809a373
@ -71,8 +71,10 @@ static av_always_inline type bytestream2_get_ ## name ## u(GetByteContext *g) \
|
|||||||
} \
|
} \
|
||||||
static av_always_inline type bytestream2_get_ ## name(GetByteContext *g) \
|
static av_always_inline type bytestream2_get_ ## name(GetByteContext *g) \
|
||||||
{ \
|
{ \
|
||||||
if (g->buffer_end - g->buffer < bytes) \
|
if (g->buffer_end - g->buffer < bytes) { \
|
||||||
|
g->buffer = g->buffer_end; \
|
||||||
return 0; \
|
return 0; \
|
||||||
|
} \
|
||||||
return bytestream2_get_ ## name ## u(g); \
|
return bytestream2_get_ ## name ## u(g); \
|
||||||
} \
|
} \
|
||||||
static av_always_inline type bytestream2_peek_ ## name(GetByteContext *g) \
|
static av_always_inline type bytestream2_peek_ ## name(GetByteContext *g) \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user