summaryrefslogtreecommitdiff
path: root/apps/codecs.c
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2006-01-21 08:17:40 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2006-01-21 08:17:40 +0000
commit33914a7dfc82fd6badaf774619539b92f3b7c255 (patch)
treefe3e12d57443e037b1aab9efcd33a9aa7e201de4 /apps/codecs.c
parent0e159f13cf4562cf17d0a2edd16bfd3b665c8473 (diff)
downloadrockbox-33914a7dfc82fd6badaf774619539b92f3b7c255.zip
rockbox-33914a7dfc82fd6badaf774619539b92f3b7c255.tar.gz
rockbox-33914a7dfc82fd6badaf774619539b92f3b7c255.tar.bz2
rockbox-33914a7dfc82fd6badaf774619539b92f3b7c255.tar.xz
Fixed the codec loader bug.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8403 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs.c')
-rw-r--r--apps/codecs.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/apps/codecs.c b/apps/codecs.c
index 88b2ea4..6720de9 100644
--- a/apps/codecs.c
+++ b/apps/codecs.c
@@ -238,13 +238,12 @@ int codec_load_ram(char* codecptr, int size, void* ptr2, int bufwrap,
if ((char *)&codecbuf[0] != codecptr) {
/* zero out codec buffer to ensure a properly zeroed bss area */
memset(codecbuf, 0, CODEC_SIZE);
-
+
size = MIN(size, CODEC_SIZE);
copy_n = MIN(size, bufwrap);
memcpy(codecbuf, codecptr, copy_n);
- size -= copy_n;
- if (size > 0) {
- memcpy(&codecbuf[copy_n], ptr2, size);
+ if (size - copy_n > 0) {
+ memcpy(&codecbuf[copy_n], ptr2, size - copy_n);
}
}
hdr = (struct codec_header *)codecbuf;
@@ -253,7 +252,9 @@ int codec_load_ram(char* codecptr, int size, void* ptr2, int bufwrap,
|| hdr->magic != CODEC_MAGIC
|| hdr->target_id != TARGET_ID
|| hdr->load_addr != codecbuf
- || hdr->end_addr > codecbuf + CODEC_SIZE) {
+ || hdr->end_addr > codecbuf + CODEC_SIZE)
+ {
+ logf("codec header error");
return CODEC_ERROR;
}
#else /* SIMULATOR */