diff options
| author | Eric Andersen <andersen@codepoet.org> | 2002-08-07 07:57:49 +0000 | 
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2002-08-07 07:57:49 +0000 | 
| commit | 698d2c6803ac9f329c0f46aed89b385680b3a31e (patch) | |
| tree | 59793ecae777f3d2a480bef1be1af4f39e76f9c6 | |
| parent | 99eb56df380e887832f121dc3680d4d7848a0050 (diff) | |
Per suggestion from Miles Bader, move calloc.c to libc/stdlib.
Also, Manuel notices that I forgot to check for when nmemb=0,
which would result in a segfault, so fix that case as well.
 -Erik
| -rw-r--r-- | libc/stdlib/Makefile | 12 | ||||
| -rw-r--r-- | libc/stdlib/calloc.c (renamed from libc/stdlib/malloc-930716/calloc.c) | 8 | ||||
| -rw-r--r-- | libc/stdlib/malloc-930716/Makefile | 3 | ||||
| -rw-r--r-- | libc/stdlib/malloc/Makefile | 3 | 
4 files changed, 15 insertions, 11 deletions
diff --git a/libc/stdlib/Makefile b/libc/stdlib/Makefile index d7cdb3129..abf0054cc 100644 --- a/libc/stdlib/Makefile +++ b/libc/stdlib/Makefile @@ -44,12 +44,12 @@ endif  MSRC2=atexit.c  MOBJ2=atexit.o on_exit.o __exit_handler.o exit.o -CSRC =	abort.c getenv.c mktemp.c realpath.c \ -	mkstemp.c mkstemp64.c rand.c random.c random_r.c setenv.c \ -	system.c div.c ldiv.c getpt.c ptsname.c grantpt.c unlockpt.c -CSRC+=  gcvt.c drand48.c drand48-iter.c drand48_r.c erand48.c erand48_r.c \ -	jrand48.c jrand48_r.c lrand48.c lrand48_r.c mrand48.c mrand48_r.c \ -	nrand48.c nrand48_r.c rand_r.c srand48.c srand48_r.c +CSRC =	abort.c getenv.c mktemp.c realpath.c mkstemp.c mkstemp64.c \ +	rand.c random.c random_r.c setenv.c system.c div.c ldiv.c \ +	getpt.c ptsname.c grantpt.c unlockpt.c gcvt.c drand48.c \ +	drand48-iter.c drand48_r.c erand48.c erand48_r.c jrand48.c \ +	jrand48_r.c lrand48.c lrand48_r.c mrand48.c mrand48_r.c \ +	nrand48.c nrand48_r.c rand_r.c srand48.c srand48_r.c calloc.c  ifeq ($(HAS_FLOATING_POINT),true)  	CSRC += strtod.c strtof.c strtold.c  endif diff --git a/libc/stdlib/malloc-930716/calloc.c b/libc/stdlib/calloc.c index e97db496d..15281a97f 100644 --- a/libc/stdlib/malloc-930716/calloc.c +++ b/libc/stdlib/calloc.c @@ -27,13 +27,15 @@ void * calloc(size_t nmemb, size_t lsize)  	void *result;  	size_t size=lsize * nmemb; -	/* guard vs integer overflow */ -	if (lsize != (size / nmemb)) { +	/* guard vs integer overflow, but allow nmemb +	 * to fall through and call malloc(0) */ +	if (nmemb && lsize != (size / nmemb)) {  		__set_errno(ENOMEM);  		return NULL;  	} -	if ((result=malloc(size))) { +	if ((result=malloc(size)) != NULL) {  		memset(result, 0, size);  	}  	return result;  } + diff --git a/libc/stdlib/malloc-930716/Makefile b/libc/stdlib/malloc-930716/Makefile index 07dc94898..cc746707e 100644 --- a/libc/stdlib/malloc-930716/Makefile +++ b/libc/stdlib/malloc-930716/Makefile @@ -24,7 +24,8 @@  TOPDIR=../../../  include $(TOPDIR)Rules.mak -CSRC=calloc.c malloc.c +# calloc.c can be found at uClibc/libc/stdlib/calloc.c  +CSRC=malloc.c  COBJS=$(patsubst %.c,%.o, $(CSRC))  OBJS=$(COBJS) diff --git a/libc/stdlib/malloc/Makefile b/libc/stdlib/malloc/Makefile index 30e5b9e2a..ecf05377d 100644 --- a/libc/stdlib/malloc/Makefile +++ b/libc/stdlib/malloc/Makefile @@ -24,8 +24,9 @@  TOPDIR=../../../  include $(TOPDIR)Rules.mak +# calloc.c can be found at uClibc/libc/stdlib/calloc.c   CSRC = malloc.o free.o realloc.o heap_alloc.o \ -	heap_alloc_at.o heap_free.o ../malloc-930716/calloc.o +	heap_alloc_at.o heap_free.o  COBJS=$(patsubst %.c,%.o, $(CSRC))  OBJS=$(COBJS)  | 
