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;