From ac7f67b3f23a63e463fb881d960bc8f31a230292 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 14 Nov 2019 12:59:14 +0100 Subject: demux_mkv, stream: attempt to improve behavior in unseekable streams stream_skip() semantics were kind of bad, especially after the recent change to the stream code. Forward stream_skip() calls could still trigger a seek and fail, even if it was supposed to actually skip data. (Maybe the idea that stream_skip() should try to seek is worthless in the first place.) Rename it to stream_seek_skip() (takes absolute position now because I think that's better), and make it always skip if the stream is marked as forward. While we're at it, make EOF detection more robust. I guess s->eof shouldn't exist at all, since it's valid only "sometimes". It should be removed... but not today. A 1-byte stream_read_peek() call is good to get the s->eof flag set to a correct value. --- demux/demux_playlist.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'demux/demux_playlist.c') 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; } } -- cgit v1.2.3