diff options
author | Haihao Xiang <haihao.xiang@intel.com> | 2022-02-08 12:50:03 +0800 |
---|---|---|
committer | Haihao Xiang <haihao.xiang@intel.com> | 2022-02-09 11:04:47 +0800 |
commit | 2727ff069e856c8fd098ddb8c26f42ec3b54a252 (patch) | |
tree | 32f23977051e3ef229f6671ea1febb3c0f4d4b83 /libavutil | |
parent | 91326dc942de4b4cce7f518baef01f22f9895406 (diff) | |
download | ffmpeg-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')
-rw-r--r-- | libavutil/fifo.c | 4 |
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; |