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.
This commit is contained in:
Kelly Yancey 2002-01-02 06:42:34 +00:00
parent f1d24f0dfd
commit adeb92a24c
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=88800
2 changed files with 12 additions and 3 deletions

View File

@ -1,5 +1,6 @@
# $FreeBSD$
PROG= malloc
SRCS= main.c malloc.c
SRCS= main.c
.PATH: ${.CURDIR}/../../../lib/libc/stdlib
NOMAN= sorry

View File

@ -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;
}