summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2017-01-15 17:53:56 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2017-01-15 21:46:19 +0100
commit16d1788356e82c639302a884437341e039574822 (patch)
treeb075555d7162cc540235cb5b0fd85963e3cde5c0
parentd984725cbf38d0a9e71c866ae61c48ad488373b4 (diff)
downloadrockbox-16d1788356e82c639302a884437341e039574822.tar.gz
rockbox-16d1788356e82c639302a884437341e039574822.tar.bz2
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.c3
-rw-r--r--lib/rbcodec/codecs/lib/codeclib.h3
-rw-r--r--lib/rbcodec/codecs/libasap/asap.c1
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)
return(x);
}
-size_t strlen(const char *s)
+#undef strlen
+size_t codec_strlen(const char *s)
{
return(ci->strlen(s));
}
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;
#define free(x) codec_free(x)
#undef alloca
#define alloca(x) __builtin_alloca(x)
+#define strlen(s) codec_strlen(s)
void* codec_malloc(size_t size);
void* codec_calloc(size_t nmemb, size_t size);
@@ -51,7 +52,7 @@ void *memset(void *s, int c, size_t n);
int memcmp(const void *s1, const void *s2, size_t n);
void *memmove(void *s1, const void *s2, size_t n);
-size_t strlen(const char *s);
+size_t codec_strlen(const char *s);
char *strcpy(char *dest, const char *src);
char *strcat(char *dest, const char *src);
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 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include "codeclib.h"
#include "asap_internal.h"
static byte s_memory[65536];