Make get_buffer and get_partial_buffer return url_ferror or AVERROR_EOF as
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Fri, 2 Oct 2009 06:36:39 +0000 (06:36 +0000)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Fri, 2 Oct 2009 06:36:39 +0000 (06:36 +0000)
appropriate if it couldn't read any data at all.
This should make handling of EOF and error simpler or make it work right without
extra code in a few place (e.g. raw demuxer).

Originally committed as revision 20135 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/aviobuf.c

index f270139..c670d48 100644 (file)
@@ -415,6 +415,10 @@ int get_buffer(ByteIOContext *s, unsigned char *buf, int size)
             size -= len;
         }
     }
+    if (size1 == size) {
+        if (url_ferror(s)) return url_ferror(s);
+        if (url_feof(s))   return AVERROR_EOF;
+    }
     return size1 - size;
 }
 
@@ -434,6 +438,10 @@ int get_partial_buffer(ByteIOContext *s, unsigned char *buf, int size)
         len = size;
     memcpy(buf, s->buf_ptr, len);
     s->buf_ptr += len;
+    if (!len) {
+        if (url_ferror(s)) return url_ferror(s);
+        if (url_feof(s))   return AVERROR_EOF;
+    }
     return len;
 }