From: Hendrik Leppkes <[email protected]> This reverts commit 5dd514af937ff4d74c3c263e4ca428b14b62d5f1. Silently ignoring errors allows some broken files to simply be played, instead of failing.
The intended goal (as confirmed with its author) of fixing a crash has been fixed differently prior to the application of this patch and this patch does notsucessfully propagate parse errors either. Signed-off-by: Michael Niedermayer <[email protected]> --- libavformat/matroskadec.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index e45cfb0..13598ea 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1726,7 +1726,7 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data, if (!track || !track->stream) { av_log(matroska->ctx, AV_LOG_INFO, "Invalid stream %"PRIu64" or size %u\n", num, size); - return AVERROR_INVALIDDATA; + return res; } else if (size <= 3) return 0; st = track->stream; @@ -2042,7 +2042,7 @@ static int matroska_parse_cluster(MatroskaDemuxContext *matroska) res = ebml_parse(matroska, matroska_clusters, &cluster); blocks_list = &cluster.blocks; blocks = blocks_list->elem; - for (i=0; i<blocks_list->nb_elem && !res; i++) + for (i=0; i<blocks_list->nb_elem; i++) if (blocks[i].bin.size > 0 && blocks[i].bin.data) { int is_keyframe = blocks[i].non_simple ? !blocks[i].reference : -1; if (!blocks[i].non_simple) @@ -2061,15 +2061,14 @@ static int matroska_parse_cluster(MatroskaDemuxContext *matroska) static int matroska_read_packet(AVFormatContext *s, AVPacket *pkt) { MatroskaDemuxContext *matroska = s->priv_data; - int ret = 0; - while (!ret && matroska_deliver_packet(matroska, pkt)) { + while (matroska_deliver_packet(matroska, pkt)) { if (matroska->done) return AVERROR_EOF; - ret = matroska_parse_cluster(matroska); + matroska_parse_cluster(matroska); } - return ret; + return 0; } static int matroska_read_seek(AVFormatContext *s, int stream_index, -- 1.7.10 _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
