From 774fd19c37f02654ea690f8e4e91ec09bde30789 Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Mon, 26 Nov 2007 23:51:36 +0000 Subject: [PATCH] Checking for total free buffer space isn't correct. What we need to check is the space available for the particular handle we want to rebuffer. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15821 a1c6a512-1295-4272-9138-f99709370657 --- apps/buffering.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/buffering.c b/apps/buffering.c index 624debc8e1..f0a50c274c 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -706,10 +706,11 @@ static void rebuffer_handle(int handle_id, size_t newpos) LOGFQUEUE("buffering >| Q_RESET_HANDLE"); queue_send(&buffering_queue, Q_RESET_HANDLE, handle_id); - /* There isn't enough space to rebuffer all of the track from its new - offset, so we ask the user to free some */ - if (buffer_len - BUF_USED < h->filesize - newpos) + size_t next = (unsigned)((void *)h->next - (void *)buffer); + if (next - h->data < h->filesize - newpos) { + /* There isn't enough space to rebuffer all of the track from its new + offset, so we ask the user to free some */ DEBUGF("rebuffer_handle: space is needed\n"); call_buffering_callbacks(EVENT_HANDLE_REBUFFER, handle_id); }