summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/ape/lib/ap/gen/strndup.c12
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;
}