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 /libc | |
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
Diffstat (limited to 'libc')
-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) |