summaryrefslogtreecommitdiff
path: root/libavutil/fifo.c
diff options
context:
space:
mode:
authorHaihao Xiang <haihao.xiang@intel.com>2022-02-08 12:50:03 +0800
committerHaihao Xiang <haihao.xiang@intel.com>2022-02-09 11:04:47 +0800
commit2727ff069e856c8fd098ddb8c26f42ec3b54a252 (patch)
tree32f23977051e3ef229f6671ea1febb3c0f4d4b83 /libavutil/fifo.c
parent91326dc942de4b4cce7f518baef01f22f9895406 (diff)
downloadffmpeg-2727ff069e856c8fd098ddb8c26f42ec3b54a252.tar.gz
lavu/fifo: fix regression
offset_w might be updated after growing the FIFO Fix ticket #9630 Tested-by: U. Artie Eoff <ullysses.a.eoff@intel.com> Reviewed-by: mkver Reviewed-by: U. Artie Eoff <ullysses.a.eoff@intel.com> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
Diffstat (limited to 'libavutil/fifo.c')
-rw-r--r--libavutil/fifo.c4
1 files changed, 3 insertions, 1 deletions
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;