summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Holmgren <magnushol@gmail.com>2005-09-18 12:44:27 +0000
committerMagnus Holmgren <magnushol@gmail.com>2005-09-18 12:44:27 +0000
commitf5ec0fa592f9e23625de38673d22c4c7ee0fdfad (patch)
tree76915ace39025c5bcecaaef658622a25e5fd25f5
parent59c995f58b52b1d41347ba4e81585423a29aa948 (diff)
downloadrockbox-f5ec0fa592f9e23625de38673d22c4c7ee0fdfad.tar.gz
rockbox-f5ec0fa592f9e23625de38673d22c4c7ee0fdfad.zip
iriver: fix problem with playing some long vorbis files (e.g., this week in tech, #21); the decoder would run out of memory and freeze rockbox.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7526 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/codecs/codec.h9
-rw-r--r--apps/codecs/lib/codeclib.h6
-rw-r--r--apps/codecs/lib/xxx2wav.c2
-rw-r--r--apps/codecs/lib/xxx2wav.h6
4 files changed, 19 insertions, 4 deletions
diff --git a/apps/codecs/codec.h b/apps/codecs/codec.h
index 0da653cf04..f954d1bc4d 100644
--- a/apps/codecs/codec.h
+++ b/apps/codecs/codec.h
@@ -29,16 +29,21 @@
29 * be implemented elsewhere */ 29 * be implemented elsewhere */
30#define malloc(x) codec_malloc(x) 30#define malloc(x) codec_malloc(x)
31#define calloc(x,y) codec_calloc(x,y) 31#define calloc(x,y) codec_calloc(x,y)
32#define alloca(x) codec_alloca(x)
33#define realloc(x,y) codec_realloc(x,y) 32#define realloc(x,y) codec_realloc(x,y)
34#define free(x) codec_free(x) 33#define free(x) codec_free(x)
35 34
36void* codec_malloc(size_t size); 35void* codec_malloc(size_t size);
37void* codec_calloc(size_t nmemb, size_t size); 36void* codec_calloc(size_t nmemb, size_t size);
38void* codec_alloca(size_t size);
39void* codec_realloc(void* ptr, size_t size); 37void* codec_realloc(void* ptr, size_t size);
40void codec_free(void* ptr); 38void codec_free(void* ptr);
41 39
40#if !defined(SIMULATOR)
41#define alloca __builtin_alloca
42#else
43#define alloca(x) codec_alloca(x)
44void* codec_alloca(size_t size);
45#endif
46
42#define abs(x) ((x)>0?(x):-(x)) 47#define abs(x) ((x)>0?(x):-(x))
43#define labs(x) abs(x) 48#define labs(x) abs(x)
44 49
diff --git a/apps/codecs/lib/codeclib.h b/apps/codecs/lib/codeclib.h
index 3fc03bd122..d6bbfd3888 100644
--- a/apps/codecs/lib/codeclib.h
+++ b/apps/codecs/lib/codeclib.h
@@ -28,9 +28,13 @@ extern unsigned char* mallocbuf; /* 512K from the start of MP3 buffer */
28 28
29void* codec_malloc(size_t size); 29void* codec_malloc(size_t size);
30void* codec_calloc(size_t nmemb, size_t size); 30void* codec_calloc(size_t nmemb, size_t size);
31void* codec_alloca(size_t size);
32void* codec_realloc(void* ptr, size_t size); 31void* codec_realloc(void* ptr, size_t size);
33void codec_free(void* ptr); 32void codec_free(void* ptr);
33
34#if defined(SIMULATOR)
35void* codec_alloca(size_t size);
36#endif
37
34void *memcpy(void *dest, const void *src, size_t n); 38void *memcpy(void *dest, const void *src, size_t n);
35void *memset(void *s, int c, size_t n); 39void *memset(void *s, int c, size_t n);
36int memcmp(const void *s1, const void *s2, size_t n); 40int memcmp(const void *s1, const void *s2, size_t n);
diff --git a/apps/codecs/lib/xxx2wav.c b/apps/codecs/lib/xxx2wav.c
index cd09d32450..776b29acfd 100644
--- a/apps/codecs/lib/xxx2wav.c
+++ b/apps/codecs/lib/xxx2wav.c
@@ -56,12 +56,14 @@ void* codec_calloc(size_t nmemb, size_t size)
56 return(x); 56 return(x);
57} 57}
58 58
59#if defined(SIMULATOR)
59void* codec_alloca(size_t size) 60void* codec_alloca(size_t size)
60{ 61{
61 void* x; 62 void* x;
62 x = codec_malloc(size); 63 x = codec_malloc(size);
63 return(x); 64 return(x);
64} 65}
66#endif
65 67
66void codec_free(void* ptr) { 68void codec_free(void* ptr) {
67 (void)ptr; 69 (void)ptr;
diff --git a/apps/codecs/lib/xxx2wav.h b/apps/codecs/lib/xxx2wav.h
index 2c9a73729c..e1e76078f2 100644
--- a/apps/codecs/lib/xxx2wav.h
+++ b/apps/codecs/lib/xxx2wav.h
@@ -46,9 +46,13 @@ extern unsigned char* filebuf; // The rest of the MP3 buffer
46 46
47void* codec_malloc(size_t size); 47void* codec_malloc(size_t size);
48void* codec_calloc(size_t nmemb, size_t size); 48void* codec_calloc(size_t nmemb, size_t size);
49void* codec_alloca(size_t size);
50void* codec_realloc(void* ptr, size_t size); 49void* codec_realloc(void* ptr, size_t size);
51void codec_free(void* ptr); 50void codec_free(void* ptr);
51
52#if defined(SIMULATOR)
53void* codec_alloca(size_t size);
54#endif
55
52size_t strlen(const char *s); 56size_t strlen(const char *s);
53char *strcpy(char *dest, const char *src); 57char *strcpy(char *dest, const char *src);
54char *strcat(char *dest, const char *src); 58char *strcat(char *dest, const char *src);