diff options
author | Jukka Jylänki <jujjyl@gmail.com> | 2014-03-16 04:05:38 +0200 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2014-03-28 23:06:17 -0400 |
commit | 0967703fd279255e2f479e6bba9bb7ef48e1c7d6 (patch) | |
tree | f8352015292db760801067f8474598d463bbcf18 /system | |
parent | c4363b595cb2529345e3248b1f374595e83953ff (diff) |
Migrate to using musl 0.9.13 strdup and strndup for better asm.js performace.
Diffstat (limited to 'system')
-rw-r--r-- | system/lib/libc/musl/src/string/strdup.c | 13 | ||||
-rw-r--r-- | system/lib/libc/musl/src/string/strndup.c | 12 | ||||
-rw-r--r-- | system/lib/libcextra.symbols | 2 |
3 files changed, 27 insertions, 0 deletions
diff --git a/system/lib/libc/musl/src/string/strdup.c b/system/lib/libc/musl/src/string/strdup.c new file mode 100644 index 00000000..dd5f80c1 --- /dev/null +++ b/system/lib/libc/musl/src/string/strdup.c @@ -0,0 +1,13 @@ +#include <stdlib.h> +#include <string.h> +#include "libc.h" + +char *__strdup(const char *s) +{ + size_t l = strlen(s); + char *d = malloc(l+1); + if (!d) return NULL; + return memcpy(d, s, l+1); +} + +weak_alias(__strdup, strdup); diff --git a/system/lib/libc/musl/src/string/strndup.c b/system/lib/libc/musl/src/string/strndup.c new file mode 100644 index 00000000..617d27ba --- /dev/null +++ b/system/lib/libc/musl/src/string/strndup.c @@ -0,0 +1,12 @@ +#include <stdlib.h> +#include <string.h> + +char *strndup(const char *s, size_t n) +{ + size_t l = strnlen(s, n); + char *d = malloc(l+1); + if (!d) return NULL; + memcpy(d, s, l); + d[l] = 0; + return d; +} diff --git a/system/lib/libcextra.symbols b/system/lib/libcextra.symbols index dedfcedd..06e68c92 100644 --- a/system/lib/libcextra.symbols +++ b/system/lib/libcextra.symbols @@ -117,12 +117,14 @@ W strchrnul T strchr T strcspn + T strdup T strfmon T strfmon_l T strlcat T strlcpy T strncasecmp_l T strncat + T strndup T strnlen T strrchr T strsep |