diff --git a/libavutil/fifo.c b/libavutil/fifo.c
index 550f13de58feb0421e3d1c73be204396b53bab14..6a73b3f0d69a3f4cd34434b695300c7c308a6ba1 100644
--- a/libavutil/fifo.c
+++ b/libavutil/fifo.c
@@ -50,15 +50,12 @@ int av_fifo_size(AVFifoBuffer *f)
  */
 int av_fifo_read(AVFifoBuffer *f, uint8_t *buf, int buf_size)
 {
-    int len;
-    int size = f->wptr - f->rptr;
-    if (size < 0)
-        size += f->end - f->buffer;
+    int size = av_fifo_size(f);
 
     if (size < buf_size)
         return -1;
     while (buf_size > 0) {
-        len = FFMIN(f->end - f->rptr, buf_size);
+        int len = FFMIN(f->end - f->rptr, buf_size);
         memcpy(buf, f->rptr, len);
         buf += len;
         f->rptr += len;