diff options
-rw-r--r-- | libc/string/strdup.c | 10 |
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; |