From adeb92a24c57f97d5cd3c3c45be239cbb23aed68 Mon Sep 17 00:00:00 2001 From: Kelly Yancey Date: Wed, 2 Jan 2002 06:42:34 +0000 Subject: Remove broken attempt to compile libc's malloc source directly; this allows this tool to compile again. Albeit, now to test a new malloc implementation one has to install the new libc which may have bad consequences (i.e. if the new malloc implementation were buggy). Add logic to workaround malloc's current behaviour of returning an invalid non-NULL pointer for 0 byte allocation requests; this prevents the tool from coring during the NOPS loop. Add $FreeBSD$ tags. --- tools/test/malloc/Makefile | 3 ++- tools/test/malloc/main.c | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'tools/test') diff --git a/tools/test/malloc/Makefile b/tools/test/malloc/Makefile index 0db597724b588..6637ab1ba33ac 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 4d1d380df9067..2a0502928c062 100644 --- a/tools/test/malloc/main.c +++ b/tools/test/malloc/main.c @@ -1,3 +1,4 @@ +/* $FreeBSD$ */ #include #include #include @@ -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; } -- cgit v1.3