summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2011-07-06 19:57:11 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-10-29 15:57:26 +0200
commit8689d87ac61a412b88326c4d31a8f3375926f869 (patch)
tree3434cf4abbf8e093b1f9b0265f6bb9db5abb25c1 /libavformat
parentc5865a8967c99aad4684ba18dce6835e1a8126fc (diff)
Revert "matroskadec: forward parsing errors to caller."
This reverts commit 5dd514af937ff4d74c3c263e4ca428b14b62d5f1. Silently ignoring errors allows some broken files to simply be played, instead of failing. (cherry picked from commit 7804b0693375c1a7ba1046f7a3579e9f63c2b15a) 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 <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/matroskadec.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index f31c731c70..abedcd7bb8 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1753,7 +1753,7 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data,
if (size <= 3 || !track || !track->stream) {
av_log(matroska->ctx, AV_LOG_INFO,
"Invalid stream %"PRIu64" or size %u\n", num, size);
- return AVERROR_INVALIDDATA;
+ return res;
}
st = track->stream;
if (st->discard >= AVDISCARD_ALL)
@@ -1990,7 +1990,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;
res=matroska_parse_block(matroska,
@@ -2007,15 +2007,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,