diff options
-rw-r--r-- | sys/src/ape/lib/ap/gen/strndup.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/sys/src/ape/lib/ap/gen/strndup.c b/sys/src/ape/lib/ap/gen/strndup.c index b60e2da2b..ef9d447df 100644 --- a/sys/src/ape/lib/ap/gen/strndup.c +++ b/sys/src/ape/lib/ap/gen/strndup.c @@ -8,13 +8,11 @@ strndup(char *p, size_t max) int n; char *np; - n = strlen(p)+1; - if(n > max) - n = max+1; - np = malloc(n); + n = strnlen(p, max); + np = malloc(n+1); if(!np) - return nil; - memmove(np, p, n); - np[n-1] = 0; + return NULL; + memcpy(np, p, n); + np[n] = 0; return np; } |