diff options
| -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;  } | 
