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>
release/5.1
Haihao Xiang 3 years ago
parent 91326dc942
commit 2727ff069e
  1. 4
      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;

Loading…
Cancel
Save