diff --git a/newlib/libc/stdlib/__atexit.c b/newlib/libc/stdlib/__atexit.c index b53402670..97ce053bf 100644 --- a/newlib/libc/stdlib/__atexit.c +++ b/newlib/libc/stdlib/__atexit.c @@ -89,22 +89,12 @@ __register_exitproc (int type, } if (p->_ind >= _ATEXIT_SIZE) { -#ifndef _ATEXIT_DYNAMIC_ALLOC +#if !defined (_ATEXIT_DYNAMIC_ALLOC) || !defined (MALLOC_PROVIDED) #ifndef __SINGLE_THREAD__ __lock_release_recursive(__atexit_recursive_mutex); #endif return -1; #else - /* Don't dynamically allocate the atexit array if malloc is not - available. */ - if (!malloc) - { -#ifndef __SINGLE_THREAD__ - __lock_release_recursive(__atexit_recursive_mutex); -#endif - return -1; - } - p = (struct _atexit *) malloc (sizeof *p); if (p == NULL) { diff --git a/newlib/libc/stdlib/__call_atexit.c b/newlib/libc/stdlib/__call_atexit.c index 27aedf5f5..3eec11214 100644 --- a/newlib/libc/stdlib/__call_atexit.c +++ b/newlib/libc/stdlib/__call_atexit.c @@ -131,14 +131,9 @@ __call_exitprocs (int code, void *d) goto restart; } -#ifndef _ATEXIT_DYNAMIC_ALLOC +#if !defined (_ATEXIT_DYNAMIC_ALLOC) || !defined (MALLOC_PROVIDED) break; #else - /* Don't dynamically free the atexit array if free is not - available. */ - if (!free) - break; - /* Move to the next block. Free empty blocks except the last one, which is part of _GLOBAL_REENT. */ if (p->_ind == 0 && p->_next)