diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2017-01-15 17:53:56 +0100 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2017-01-15 21:46:19 +0100 |
commit | 16d1788356e82c639302a884437341e039574822 (patch) | |
tree | b075555d7162cc540235cb5b0fd85963e3cde5c0 | |
parent | d984725cbf38d0a9e71c866ae61c48ad488373b4 (diff) | |
download | rockbox-16d1788356e82c639302a884437341e039574822.tar.gz rockbox-16d1788356e82c639302a884437341e039574822.zip |
Fix codecs in simulator builds on Windows
The mingw linker uses strlen() in some cases, and codeclib.c redefines it, that
leads to mingw runtime init to call into our strlen() and then ci->strlen() which
of course crashes. Apply the same fix as for malloc and friends: rename the symbol.
The codeclib.h include is necessary for normal builds.
Change-Id: Ifa85901a3e4a31cc0e10b4b905df348a239d5c99
-rw-r--r-- | lib/rbcodec/codecs/lib/codeclib.c | 3 | ||||
-rw-r--r-- | lib/rbcodec/codecs/lib/codeclib.h | 3 | ||||
-rw-r--r-- | lib/rbcodec/codecs/libasap/asap.c | 1 |
3 files changed, 5 insertions, 2 deletions
diff --git a/lib/rbcodec/codecs/lib/codeclib.c b/lib/rbcodec/codecs/lib/codeclib.c index 1f52c00434..12e29f477c 100644 --- a/lib/rbcodec/codecs/lib/codeclib.c +++ b/lib/rbcodec/codecs/lib/codeclib.c | |||
@@ -100,7 +100,8 @@ void* codec_realloc(void* ptr, size_t size) | |||
100 | return(x); | 100 | return(x); |
101 | } | 101 | } |
102 | 102 | ||
103 | size_t strlen(const char *s) | 103 | #undef strlen |
104 | size_t codec_strlen(const char *s) | ||
104 | { | 105 | { |
105 | return(ci->strlen(s)); | 106 | return(ci->strlen(s)); |
106 | } | 107 | } |
diff --git a/lib/rbcodec/codecs/lib/codeclib.h b/lib/rbcodec/codecs/lib/codeclib.h index 18c1043b8c..6a18870898 100644 --- a/lib/rbcodec/codecs/lib/codeclib.h +++ b/lib/rbcodec/codecs/lib/codeclib.h | |||
@@ -40,6 +40,7 @@ extern struct codec_api *ci; | |||
40 | #define free(x) codec_free(x) | 40 | #define free(x) codec_free(x) |
41 | #undef alloca | 41 | #undef alloca |
42 | #define alloca(x) __builtin_alloca(x) | 42 | #define alloca(x) __builtin_alloca(x) |
43 | #define strlen(s) codec_strlen(s) | ||
43 | 44 | ||
44 | void* codec_malloc(size_t size); | 45 | void* codec_malloc(size_t size); |
45 | void* codec_calloc(size_t nmemb, size_t size); | 46 | void* codec_calloc(size_t nmemb, size_t size); |
@@ -51,7 +52,7 @@ void *memset(void *s, int c, size_t n); | |||
51 | int memcmp(const void *s1, const void *s2, size_t n); | 52 | int memcmp(const void *s1, const void *s2, size_t n); |
52 | void *memmove(void *s1, const void *s2, size_t n); | 53 | void *memmove(void *s1, const void *s2, size_t n); |
53 | 54 | ||
54 | size_t strlen(const char *s); | 55 | size_t codec_strlen(const char *s); |
55 | char *strcpy(char *dest, const char *src); | 56 | char *strcpy(char *dest, const char *src); |
56 | char *strcat(char *dest, const char *src); | 57 | char *strcat(char *dest, const char *src); |
57 | 58 | ||
diff --git a/lib/rbcodec/codecs/libasap/asap.c b/lib/rbcodec/codecs/libasap/asap.c index a2c592fd7e..2290884f86 100644 --- a/lib/rbcodec/codecs/libasap/asap.c +++ b/lib/rbcodec/codecs/libasap/asap.c | |||
@@ -21,6 +21,7 @@ | |||
21 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | 21 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include "codeclib.h" | ||
24 | #include "asap_internal.h" | 25 | #include "asap_internal.h" |
25 | 26 | ||
26 | static byte s_memory[65536]; | 27 | static byte s_memory[65536]; |