OSDN Git Service

protect the size=seek(SEEK_END,-1)+1 results with an if (.. < 0), else the
authorRonald S. Bultje <rsbultje@gmail.com>
Tue, 30 Jan 2007 10:37:52 +0000 (10:37 +0000)
committerGuillaume Poirier <gpoirier@mplayerhq.hu>
Tue, 30 Jan 2007 10:37:52 +0000 (10:37 +0000)
return value may still end up being zero (if the seek returns -1, which is
e.g. what file.c will return on error), which is a valid (but incorrect)
filesize.
Patch by Ronald S. Bultje % rbultje A ronald P bitfreak P net %
Original thread:
date: Jan 2, 2007 2:11 AM
subject: [Ffmpeg-devel] Re: [PATCH] file length handling

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

libavformat/avio.c

index 44bc3af..0dd7e63 100644 (file)
@@ -154,7 +154,9 @@ offset_t url_filesize(URLContext *h)
     size= url_seek(h, 0, AVSEEK_SIZE);
     if(size<0){
         pos = url_seek(h, 0, SEEK_CUR);
-        size = url_seek(h, -1, SEEK_END)+1;
+        if ((size = url_seek(h, -1, SEEK_END)) < 0)
+            return size;
+        size++;
         url_seek(h, pos, SEEK_SET);
     }
     return size;