diff options
Diffstat (limited to 'apps/codecs.c')
-rw-r--r-- | apps/codecs.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/apps/codecs.c b/apps/codecs.c index 88b2ea4e07..6720de909c 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, | |||
238 | if ((char *)&codecbuf[0] != codecptr) { | 238 | if ((char *)&codecbuf[0] != codecptr) { |
239 | /* zero out codec buffer to ensure a properly zeroed bss area */ | 239 | /* zero out codec buffer to ensure a properly zeroed bss area */ |
240 | memset(codecbuf, 0, CODEC_SIZE); | 240 | memset(codecbuf, 0, CODEC_SIZE); |
241 | 241 | ||
242 | size = MIN(size, CODEC_SIZE); | 242 | size = MIN(size, CODEC_SIZE); |
243 | copy_n = MIN(size, bufwrap); | 243 | copy_n = MIN(size, bufwrap); |
244 | memcpy(codecbuf, codecptr, copy_n); | 244 | memcpy(codecbuf, codecptr, copy_n); |
245 | size -= copy_n; | 245 | if (size - copy_n > 0) { |
246 | if (size > 0) { | 246 | memcpy(&codecbuf[copy_n], ptr2, size - copy_n); |
247 | memcpy(&codecbuf[copy_n], ptr2, size); | ||
248 | } | 247 | } |
249 | } | 248 | } |
250 | hdr = (struct codec_header *)codecbuf; | 249 | hdr = (struct codec_header *)codecbuf; |
@@ -253,7 +252,9 @@ int codec_load_ram(char* codecptr, int size, void* ptr2, int bufwrap, | |||
253 | || hdr->magic != CODEC_MAGIC | 252 | || hdr->magic != CODEC_MAGIC |
254 | || hdr->target_id != TARGET_ID | 253 | || hdr->target_id != TARGET_ID |
255 | || hdr->load_addr != codecbuf | 254 | || hdr->load_addr != codecbuf |
256 | || hdr->end_addr > codecbuf + CODEC_SIZE) { | 255 | || hdr->end_addr > codecbuf + CODEC_SIZE) |
256 | { | ||
257 | logf("codec header error"); | ||
257 | return CODEC_ERROR; | 258 | return CODEC_ERROR; |
258 | } | 259 | } |
259 | #else /* SIMULATOR */ | 260 | #else /* SIMULATOR */ |