From cf815d5f2439bfdb6938101b635933d39687175e Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Thu, 11 Oct 2007 15:05:25 +0200 Subject: [PATCH] Fix bufread implementation. This fixes problems with codecs that use it. Some codecs (like MPC or AAC) use codec_filebuf_callback(), which uses bufseek, instead of codec_request_buffer_callback(), which uses bufgetdata. --- apps/buffering.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/buffering.c b/apps/buffering.c index 576118f71..6e7d6ce88 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -828,10 +828,12 @@ ssize_t bufread(int handle_id, size_t size, char *dest) if (!h) return -1; - if (h->available < size && h->filerem > 0) /* Data isn't ready */ + if (h->available - RINGBUF_SUB(h->ridx, h->data) < size && h->filerem > 0) + /* Data isn't ready */ return -2; - if (h->available == 0 && h->filerem == 0) /* File is finished reading */ + if (h->available - RINGBUF_SUB(h->ridx, h->data) == 0 && h->filerem == 0) + /* File is finished reading */ return 0; buffered_data = MIN(size, h->available - RINGBUF_SUB(h->ridx, h->data)); -- 2.11.4.GIT