OSDN Git Service

Ensure Bink demuxer returns AVERROR code when av_get_packet() fails
authorPeter Ross <pross@xvid.org>
Tue, 9 Mar 2010 12:32:08 +0000 (12:32 +0000)
committerPeter Ross <pross@xvid.org>
Tue, 9 Mar 2010 12:32:08 +0000 (12:32 +0000)
Originally committed as revision 22389 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/bink.c

index 09da7e2..3208d28 100644 (file)
@@ -212,8 +212,8 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt)
         bink->current_track++;
         if (audio_size >= 4) {
             /* get one audio packet per track */
-            if ((ret = av_get_packet(pb, pkt, audio_size)) <= 0)
-                return ret;
+            if ((ret = av_get_packet(pb, pkt, audio_size)) != audio_size)
+                return ret < 0 ? ret : AVERROR(EIO);;
             pkt->stream_index = bink->current_track;
             pkt->pts = bink->audio_pts[bink->current_track - 1];
 
@@ -230,7 +230,7 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt)
     /* get video packet */
     if ((ret = av_get_packet(pb, pkt, bink->remain_packet_size))
                                    != bink->remain_packet_size)
-        return ret;
+        return ret < 0 ? ret : AVERROR(EIO);
     pkt->stream_index = 0;
     pkt->pts = bink->video_pts++;
     pkt->flags |= PKT_FLAG_KEY;