summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
Diffstat (limited to 'demux')
-rw-r--r--demux/demux_mkv.c4
-rw-r--r--demux/demux_playlist.c2
-rw-r--r--demux/ebml.c5
3 files changed, 6 insertions, 5 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index bd36edb784..4c5f376137 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -1954,7 +1954,7 @@ static int read_mkv_segment_header(demuxer_t *demuxer, int64_t *segment_end)
if (demuxer->params)
num_skip = demuxer->params->matroska_wanted_segment;
- while (!s->eof) {
+ while (stream_read_peek(s, &(char){0}, 1)) {
if (ebml_read_id(s) != MATROSKA_ID_SEGMENT) {
MP_VERBOSE(demuxer, "segment not found\n");
return 0;
@@ -2580,7 +2580,7 @@ static int read_block(demuxer_t *demuxer, int64_t end, struct block_info *block)
exit:
if (res <= 0)
free_block(block);
- stream_seek(s, endpos);
+ stream_seek_skip(s, endpos);
return res;
}
diff --git a/demux/demux_playlist.c b/demux/demux_playlist.c
index a7650b2b69..b51edad86c 100644
--- a/demux/demux_playlist.c
+++ b/demux/demux_playlist.c
@@ -99,7 +99,7 @@ static int read_characters(stream_t *s, uint8_t *dst, int dstsize, int utf16)
if (len > dstsize)
return -1; // line too long
memcpy(dst, buf, len);
- stream_skip(s, len);
+ stream_seek_skip(s, len);
return len;
}
}
diff --git a/demux/ebml.c b/demux/ebml.c
index 44fa0c0793..143a5fe57b 100644
--- a/demux/ebml.c
+++ b/demux/ebml.c
@@ -180,14 +180,14 @@ int ebml_read_skip(struct mp_log *log, int64_t end, stream_t *s)
if (len >= INT64_MAX - pos2 || (end > 0 && pos2 + len > end))
goto invalid;
- if (!stream_skip(s, len))
+ if (!stream_seek_skip(s, pos2 + len))
goto invalid;
return 0;
invalid:
mp_err(log, "Invalid EBML length at position %"PRId64"\n", pos);
- stream_seek(s, pos);
+ stream_seek_skip(s, pos);
return 1;
}
@@ -198,6 +198,7 @@ int ebml_resync_cluster(struct mp_log *log, stream_t *s)
{
int64_t pos = stream_tell(s);
uint32_t last_4_bytes = 0;
+ stream_read_peek(s, &(char){0}, 1);
if (!s->eof) {
mp_err(log, "Corrupt file detected. "
"Trying to resync starting from position %"PRId64"...\n", pos);