From 64d340c62ad5954c1a834df2d26057135e771774 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Mon, 24 Sep 2012 00:33:15 +0200 Subject: [PATCH] lavf/utils: add error check in av_read_frame() In particular, fix crash when the input file contains no packets (e.g. an ffmeta input). --- libavformat/utils.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 6603483e64..4f3529aff4 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1409,11 +1409,18 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt) AVStream *st; if (!genpts) { - ret = s->packet_buffer ? read_from_packet_buffer(&s->packet_buffer, - &s->packet_buffer_end, - pkt) : - read_frame_internal(s, pkt); - goto return_packet; + while (1) { + ret = s->packet_buffer ? + read_from_packet_buffer(&s->packet_buffer, &s->packet_buffer_end, pkt) : + read_frame_internal(s, pkt); + if (ret < 0) { + if (ret == AVERROR(EAGAIN)) + continue; + else + return ret; + } + goto return_packet; + } } for (;;) {