From b56f61d2abe69aa426252af0343fac1dd6d68f7e Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 2 Jan 2014 00:39:14 +0100 Subject: stream: always respect sector_size, fixes cdda:// Streams like CDDA have special requirements in what quantities data can be read: you can only read a sector at once, not more and not less. The stream_peek() function didn't respect that and set less (used internal buffer size of 2048 bytes, instead of CD sector size of 2352 bytes), so no data was read and EOF was accidentally set, making playback with cdda:// fail. This is a regression since commit 9a723f, but that commit merely exposed the issue (the redundant seek would clear the EOF flag). --- stream/stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stream/stream.c b/stream/stream.c index 3332e66ace..b48de575ea 100644 --- a/stream/stream.c +++ b/stream/stream.c @@ -562,7 +562,7 @@ struct bstr stream_peek(stream_t *s, int len) while (buf_valid < len) { int chunk = MPMAX(len - buf_valid, STREAM_BUFFER_SIZE); if (s->sector_size) - chunk = STREAM_BUFFER_SIZE; + chunk = s->sector_size; assert(buf_valid + chunk <= TOTAL_BUFFER_SIZE); int read = stream_read_unbuffered(s, &s->buffer[buf_valid], chunk); if (read == 0) -- cgit v1.2.3