diff options
Diffstat (limited to 'test/malloc')
-rw-r--r-- | test/malloc/malloc.c | 50 |
1 files changed, 30 insertions, 20 deletions
diff --git a/test/malloc/malloc.c b/test/malloc/malloc.c index 1cea31986..d63856845 100644 --- a/test/malloc/malloc.c +++ b/test/malloc/malloc.c @@ -11,61 +11,71 @@ #define random_size() (random()%MAX_SIZE) #define random_ptr() (random()%N_PTRS) -void test1(void); -void test2(void); +int test1(void); +int test2(void); -int main(int argc,char *argv[]) +int main(int argc, char *argv[]) { - test1(); - test2(); - return 0; + return test1() + test2(); } -void test1(void) +int test1(void) { void **ptrs; int i,j; int size; + int ret = 0; srandom(0x19730929); ptrs = malloc(N_PTRS*sizeof(void *)); - for(i=0;i<N_PTRS;i++){ - ptrs[i]=malloc(random_size()); + for(i=0; i<N_PTRS; i++){ + if ((ptrs[i] = malloc(random_size())) == NULL) { + printf("malloc random failed! %i\n", i); + ++ret; + } } - for(i=0;i<N_ALLOCS;i++){ - j=random_ptr(); + for(i=0; i<N_ALLOCS; i++){ + j = random_ptr(); free(ptrs[j]); - size=random_size(); - ptrs[j]=malloc(size); - if(!ptrs[j]){ - printf("malloc failed! %d\n",i); + size = random_size(); + ptrs[j] = malloc(size); + if (!ptrs[j]) { + printf("malloc failed! %d\n", i); + ++ret; } memset(ptrs[j],0,size); } - for(i=0;i<N_PTRS;i++){ + for(i=0; i<N_PTRS; i++){ free(ptrs[i]); } + + return ret; } -void test2(void) +int test2(void) { void *ptr = NULL; + int ret = 0; ptr = realloc(ptr,100); - if(!ptr){ + if (!ptr) { printf("couldn't realloc() a NULL pointer\n"); - }else{ + ++ret; + } else { free(ptr); } ptr = malloc(100); ptr = realloc(ptr, 0); - if(ptr){ + if (ptr) { printf("realloc(,0) failed\n"); + ++ret; free(ptr); } + + return ret; } |