From 0055f13707bdeeca5893c57541d73a84b6069f9f Mon Sep 17 00:00:00 2001 From: Antonius Hellmann Date: Sun, 22 Feb 2009 10:12:34 +0000 Subject: This should fix the occasional data aborts mainly in conjunction with AlbumArt on PP targets. See FS#9827 for details. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20081 a1c6a512-1295-4272-9138-f99709370657 --- apps/buffering.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/apps/buffering.c b/apps/buffering.c index d715456efb..ba9ed5e57e 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -251,17 +251,11 @@ static struct memory_handle *add_handle(size_t data_size, bool can_wrap, len = data_size + sizeof(struct memory_handle); /* First, will the handle wrap? */ - overlap = RINGBUF_ADD_CROSS(new_widx, sizeof(struct memory_handle), - buffer_len - 1); /* If the handle would wrap, move to the beginning of the buffer, - * otherwise check if the data can/would wrap and move it to the - * beginning if needed */ - if (overlap > 0) { + * or if the data must not but would wrap, move it to the beginning */ + if( (new_widx + sizeof(struct memory_handle) > buffer_len) || + (!can_wrap && (new_widx + len > buffer_len)) ) { new_widx = 0; - } else if (!can_wrap) { - overlap = RINGBUF_ADD_CROSS(new_widx, len, buffer_len - 1); - if (overlap > 0) - new_widx += data_size - overlap; } /* How far we shifted buf_widx to align things, must be < buffer_len */ -- cgit v1.2.3