From 774eb1d98dce085fa5af52bcd0a1499aecfdca0c Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 22 Jan 2014 22:33:55 +0100 Subject: demux_mkv: always fail on header reading error For some reason, if an error happened when reading headers, it merely stopped reading the headers, and then continued normally. (It looks like the case to exit hard (-2) was mainly used for skipping unwanted ordered chapter segments.) I can't comprehend this. Always exit on error when reading headers. (Maybe some more error tolerance would be good, but I have no test case, and there's some danger of entering endless loops.) --- demux/demux_mkv.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'demux') diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index bec8f871a0..41dc6baed0 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -1762,10 +1762,8 @@ static int demux_mkv_open(demuxer_t *demuxer, enum demux_check check) break; } int res = read_header_element(demuxer, id, start_pos); - if (res <= -2) - return -1; if (res < 0) - break; + return -1; } // Read headers that come after the first cluster (i.e. require seeking). @@ -1800,10 +1798,8 @@ static int demux_mkv_open(demuxer_t *demuxer, enum demux_check check) } elem->parsed = false; // don't make read_header_element skip it int res = read_header_element(demuxer, elem->id, elem->pos); - if (res <= -2) - return -1; if (res < 0) - break; + return -1; } if (!stream_seek(s, start_pos)) { MP_ERR(demuxer, "Couldn't seek back after reading headers?\n"); -- cgit v1.2.3