summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--newlib/libc/stdlib/__atexit.c12
-rw-r--r--newlib/libc/stdlib/__call_atexit.c7
2 files changed, 2 insertions, 17 deletions
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)