aboutsummaryrefslogtreecommitdiff
path: root/tools/test/malloc
diff options
context:
space:
mode:
authorKelly Yancey <kbyanc@FreeBSD.org>2002-01-02 06:42:34 +0000
committerKelly Yancey <kbyanc@FreeBSD.org>2002-01-02 06:42:34 +0000
commitadeb92a24c57f97d5cd3c3c45be239cbb23aed68 (patch)
treef8269378d1f1429251fc72c079e5ae33b2fab0e6 /tools/test/malloc
parentf1d24f0dfd97668e81d4d582a4e7a3866a3fab8d (diff)
Notes
Diffstat (limited to 'tools/test/malloc')
-rw-r--r--tools/test/malloc/Makefile3
-rw-r--r--tools/test/malloc/main.c12
2 files changed, 12 insertions, 3 deletions
diff --git a/tools/test/malloc/Makefile b/tools/test/malloc/Makefile
index 0db597724b58..6637ab1ba33a 100644
--- a/tools/test/malloc/Makefile
+++ b/tools/test/malloc/Makefile
@@ -1,5 +1,6 @@
+# $FreeBSD$
PROG= malloc
-SRCS= main.c malloc.c
+SRCS= main.c
.PATH: ${.CURDIR}/../../../lib/libc/stdlib
NOMAN= sorry
diff --git a/tools/test/malloc/main.c b/tools/test/malloc/main.c
index 4d1d380df906..2a0502928c06 100644
--- a/tools/test/malloc/main.c
+++ b/tools/test/malloc/main.c
@@ -1,3 +1,4 @@
+/* $FreeBSD$ */
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
@@ -19,7 +20,7 @@ main(int argc, char **argv)
printf("BRK(0)=%x ",sbrk(0));
foo = malloc (sizeof *foo * NBUCKETS);
memset(foo,0,sizeof *foo * NBUCKETS);
- for (i = 1; i <= 4096; i+=i) {
+ for (i = 1; i <= 4096; i *= 2) {
for (j = 0 ; j < 40960/i && j < NBUCKETS; j++) {
foo[j] = malloc(i);
}
@@ -31,8 +32,15 @@ main(int argc, char **argv)
for (i = 0 ; i < NOPS ; i++) {
j = random() % NBUCKETS;
- k = random() % NSIZE;
+ k = random() % NSIZE;
foo[j] = realloc(foo[j], k & 1 ? 0 : k);
+ if (k & 1 || k == 0) {
+ /*
+ * Workaround because realloc return bogus pointer rather than
+ * NULL if passed zero length.
+ */
+ foo[j] = 0;
+ }
if (foo[j])
foo[j][0] = 1;
}