diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
index 4a595e2e437bc8b00002ca2438d7aa235044309b..ab8fc1da3993ca086cb5b34f1faa6ee5714e8144 100644
--- a/libavformat/aviobuf.c
+++ b/libavformat/aviobuf.c
@@ -172,7 +172,9 @@ offset_t url_fsize(ByteIOContext *s)
         return -EPIPE;
     size = s->seek(s->opaque, 0, AVSEEK_SIZE);
     if(size<0){
-        size = s->seek(s->opaque, -1, SEEK_END) + 1;
+        if ((size = s->seek(s->opaque, -1, SEEK_END)) < 0)
+            return size;
+        size++;
         s->seek(s->opaque, s->pos, SEEK_SET);
     }
     return size;