summaryrefslogtreecommitdiffstats
path: root/apps/buffering.c
diff options
context:
space:
mode:
authorNicolas Pennequin <nicolas.pennequin@free.fr>2007-11-07 00:39:08 +0000
committerNicolas Pennequin <nicolas.pennequin@free.fr>2007-11-07 00:39:08 +0000
commit71b40994e0c58cb3cb97ac91a0f771dce182662f (patch)
tree2f5af8762d57c8032f75bc2842935d86d58705ba /apps/buffering.c
parentd9a9801171d53d12fd5e6df96ae6496056096f7c (diff)
downloadrockbox-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.c7
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)