summaryrefslogtreecommitdiff
path: root/libc/string/strdup.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/string/strdup.c')
-rw-r--r--libc/string/strdup.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/libc/string/strdup.c b/libc/string/strdup.c
index dff5af60a..d15345d0d 100644
--- a/libc/string/strdup.c
+++ b/libc/string/strdup.c
@@ -10,25 +10,23 @@
#ifdef WANT_WIDE
libc_hidden_proto(wcslen)
-libc_hidden_proto(wcscpy)
# define Wstrdup wcsdup
# define Wstrlen wcslen
-# define Wstrcpy wcscpy
#else
libc_hidden_proto(strdup)
libc_hidden_proto(strlen)
-libc_hidden_proto(strcpy)
# define Wstrdup strdup
# define Wstrlen strlen
-# define Wstrcpy strcpy
#endif
+libc_hidden_proto(memcpy)
Wchar *Wstrdup(register const Wchar *s1)
{
register Wchar *s;
+ register size_t l = (Wstrlen(s1) + 1) * sizeof(Wchar);
- if ((s = malloc((Wstrlen(s1) + 1) * sizeof(Wchar))) != NULL) {
- Wstrcpy(s, s1);
+ if ((s = malloc(l)) != NULL) {
+ memcpy(s, s1, l);
}
return s;