diff options
author | Nicolas Pennequin <nicolas.pennequin@free.fr> | 2007-11-07 00:39:08 +0000 |
---|---|---|
committer | Nicolas Pennequin <nicolas.pennequin@free.fr> | 2007-11-07 00:39:08 +0000 |
commit | 71b40994e0c58cb3cb97ac91a0f771dce182662f (patch) | |
tree | 2f5af8762d57c8032f75bc2842935d86d58705ba /apps/buffering.c | |
parent | d9a9801171d53d12fd5e6df96ae6496056096f7c (diff) | |
download | rockbox-71b40994e0c58cb3cb97ac91a0f771dce182662f.tar.gz rockbox-71b40994e0c58cb3cb97ac91a0f771dce182662f.zip |
Fix a flaw in prep_bufdata() that would lead to all kinds of problems with codecs that used bufread (MPC is one).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15501 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/buffering.c')
-rw-r--r-- | apps/buffering.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/apps/buffering.c b/apps/buffering.c index ecca3872f8..8d44bbec27 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -987,10 +987,11 @@ static size_t prep_bufdata(const struct memory_handle *h, size_t size) if (h->type == TYPE_PACKET_AUDIO && size > BUFFERING_DEFAULT_FILECHUNK) { - /* If more than a filechunk is requested, log it and provide no more - * than the amount of data on buffer or one file chunk */ logf("data request > filechunk"); - size = MAX(avail,BUFFERING_DEFAULT_FILECHUNK); + /* If more than a filechunk is requested, provide no more than the + amount of data on buffer or one file chunk, but without increasing + "size", which would be bad. */ + size = MIN(size, MAX(avail, BUFFERING_DEFAULT_FILECHUNK)); } if (h->filerem > 0 && avail < size) |