diff --git a/ChangeLog b/ChangeLog index 05a6b612e5..03b02d3319 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-09-10 Ulrich Drepper + * malloc/malloc.c: Replace MALLOC_FAILURE_ACTION with use of __set_errno. + * malloc/hooks.c: Likewise. + * malloc/arena.c (ptmalloc_init_minimal): Removed. Initialize all variables statically. (narenas): Initialize. diff --git a/malloc/hooks.c b/malloc/hooks.c index 7817ae9d4a..fc46e7d95a 100644 --- a/malloc/hooks.c +++ b/malloc/hooks.c @@ -204,7 +204,7 @@ top_check(void) new_brk = (char*)(MORECORE (sbrk_size)); if (new_brk == (char*)(MORECORE_FAILURE)) { - MALLOC_FAILURE_ACTION; + __set_errno (ENOMEM); return -1; } /* Call the `morecore' hook if necessary. */ @@ -225,7 +225,7 @@ malloc_check(size_t sz, const void *caller) void *victim; if (sz+1 == 0) { - MALLOC_FAILURE_ACTION; + __set_errno (ENOMEM); return NULL; } @@ -266,7 +266,7 @@ realloc_check(void* oldmem, size_t bytes, const void *caller) unsigned char *magic_p; if (bytes+1 == 0) { - MALLOC_FAILURE_ACTION; + __set_errno (ENOMEM); return NULL; } if (oldmem == 0) return malloc_check(bytes, NULL); @@ -334,7 +334,7 @@ memalign_check(size_t alignment, size_t bytes, const void *caller) if (alignment < MINSIZE) alignment = MINSIZE; if (bytes+1 == 0) { - MALLOC_FAILURE_ACTION; + __set_errno (ENOMEM); return NULL; } (void)mutex_lock(&main_arena.mutex); diff --git a/malloc/malloc.c b/malloc/malloc.c index 3cff6d84d6..864c7d908b 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -184,7 +184,6 @@ USE_MALLOC_LOCK NOT defined MALLOC_DEBUG NOT defined REALLOC_ZERO_BYTES_FREES 1 - MALLOC_FAILURE_ACTION errno = ENOMEM TRIM_FASTBINS 0 Options for customizing MORECORE: @@ -233,7 +232,7 @@ extern "C" { #include #include /* needed for malloc_stats */ -#include /* needed for optional MALLOC_FAILURE_ACTION */ +#include /* For uintptr_t. */ #include @@ -478,20 +477,6 @@ void *(*__morecore)(ptrdiff_t) = __default_morecore; ({ __typeof (val) _v; asm ("" : "=r" (_v) : "0" (val)); _v; }) -/* - MALLOC_FAILURE_ACTION is the action to take before "return 0" when - malloc fails to be able to return memory, either because memory is - exhausted or because of illegal arguments. - - By default, sets errno if running on STD_C platform, else does nothing. -*/ - -#ifndef MALLOC_FAILURE_ACTION -#define MALLOC_FAILURE_ACTION \ - errno = ENOMEM; - -#endif - /* MORECORE-related declarations. By default, rely on sbrk */ @@ -1401,7 +1386,7 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ #define checked_request2size(req, sz) \ if (REQUEST_OUT_OF_RANGE(req)) { \ - MALLOC_FAILURE_ACTION; \ + __set_errno (ENOMEM); \ return 0; \ } \ (sz) = request2size(req); @@ -2774,7 +2759,7 @@ static void* sYSMALLOc(INTERNAL_SIZE_T nb, mstate av) } /* catch all failure paths */ - MALLOC_FAILURE_ACTION; + __set_errno (ENOMEM); return 0; } @@ -3247,7 +3232,7 @@ public_cALLOc(size_t n, size_t elem_size) (((INTERNAL_SIZE_T) 1) << (8 * sizeof (INTERNAL_SIZE_T) / 2)) if (__builtin_expect ((n | elem_size) >= HALF_INTERNAL_SIZE_T, 0)) { if (elem_size != 0 && bytes / elem_size != n) { - MALLOC_FAILURE_ACTION; + __set_errno (ENOMEM); return 0; } }