From 68fcdbf1e570d16ca76e28a1f799dfa72a62e79a Mon Sep 17 00:00:00 2001
From: "Ronald S. Bultje" <rsbultje@gmail.com>
Date: Tue, 30 Jan 2007 10:48:39 +0000
Subject: [PATCH] Fix misbehaviour in url_fseek() when seeking fails. The
 return value of the seek function is -1 on error, not -EPIPE (the return
 value in url_seek() if no seek function pointer is set) Patch by Ronald S.
 Bultje % rbultje A ronald P bitfreak P net % Original thread: date: Dec 31,
 2006 9:25 PM subject: [Ffmpeg-devel] Re: [PATCH] file length handling

Originally committed as revision 7766 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavformat/aviobuf.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
index ab8fc1da399..ca93c64c843 100644
--- a/libavformat/aviobuf.c
+++ b/libavformat/aviobuf.c
@@ -136,6 +136,8 @@ offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence)
             fill_buffer(s);
         s->buf_ptr = s->buf_end + offset - s->pos;
     } else {
+        offset_t res = -EPIPE;
+
 #if defined(CONFIG_MUXERS) || defined(CONFIG_NETWORK)
         if (s->write_flag) {
             flush_buffer(s);
@@ -146,8 +148,8 @@ offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence)
             s->buf_end = s->buffer;
         }
         s->buf_ptr = s->buffer;
-        if (!s->seek || s->seek(s->opaque, offset, SEEK_SET) == (offset_t)-EPIPE)
-            return -EPIPE;
+        if (!s->seek || (res = s->seek(s->opaque, offset, SEEK_SET)) < 0)
+            return res;
         s->pos = offset;
     }
     s->eof_reached = 0;
-- 
GitLab