1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-21 18:57:35 +00:00

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.)
This commit is contained in:
wm4 2014-01-22 22:33:55 +01:00
parent 85bd178dbe
commit 774eb1d98d

View File

@ -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");