From 2727ff069e856c8fd098ddb8c26f42ec3b54a252 Mon Sep 17 00:00:00 2001 From: Haihao Xiang Date: Tue, 8 Feb 2022 12:50:03 +0800 Subject: lavu/fifo: fix regression offset_w might be updated after growing the FIFO Fix ticket #9630 Tested-by: U. Artie Eoff Reviewed-by: mkver Reviewed-by: U. Artie Eoff Signed-off-by: Haihao Xiang --- libavutil/fifo.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libavutil') diff --git a/libavutil/fifo.c b/libavutil/fifo.c index 0af0154945..02e0ec3f0d 100644 --- a/libavutil/fifo.c +++ b/libavutil/fifo.c @@ -147,13 +147,15 @@ static int fifo_write_common(AVFifo *f, const uint8_t *buf, size_t *nb_elems, AVFifoCB read_cb, void *opaque) { size_t to_write = *nb_elems; - size_t offset_w = f->offset_w; + size_t offset_w; int ret = 0; ret = fifo_check_space(f, to_write); if (ret < 0) return ret; + offset_w = f->offset_w; + while (to_write > 0) { size_t len = FFMIN(f->nb_elems - offset_w, to_write); uint8_t *wptr = f->buffer + offset_w * f->elem_size; -- cgit v1.2.3