2002-11-18 Wolfram Gloger <wg@malloc.de>

* malloc/arena.c
	(ptmalloc_lock_all, ptmalloc_unlock_all, ptmalloc_unlock_all2): Do
	nothing if not initialized.  Bug report from Marcus Brinkmann
	<Marcus.Brinkmann@ruhr-uni-bochum.de>.
This commit is contained in:
Roland McGrath 2002-11-20 09:40:55 +00:00
parent 51b3c8f6b7
commit 2a652f5aca

View File

@ -73,6 +73,9 @@ static int stat_n_heaps;
/* Mapped memory in non-main arenas (reliable only for NO_THREADS). */ /* Mapped memory in non-main arenas (reliable only for NO_THREADS). */
static unsigned long arena_mem; static unsigned long arena_mem;
/* Already initialized? */
int __malloc_initialized = -1;
/**************************************************************************/ /**************************************************************************/
#if USE_ARENAS #if USE_ARENAS
@ -212,6 +215,8 @@ ptmalloc_lock_all __MALLOC_P((void))
{ {
mstate ar_ptr; mstate ar_ptr;
if(__malloc_initialized < 1)
return;
(void)mutex_lock(&list_lock); (void)mutex_lock(&list_lock);
for(ar_ptr = &main_arena;;) { for(ar_ptr = &main_arena;;) {
(void)mutex_lock(&ar_ptr->mutex); (void)mutex_lock(&ar_ptr->mutex);
@ -232,6 +237,8 @@ ptmalloc_unlock_all __MALLOC_P((void))
{ {
mstate ar_ptr; mstate ar_ptr;
if(__malloc_initialized < 1)
return;
tsd_setspecific(arena_key, save_arena); tsd_setspecific(arena_key, save_arena);
__malloc_hook = save_malloc_hook; __malloc_hook = save_malloc_hook;
__free_hook = save_free_hook; __free_hook = save_free_hook;
@ -255,6 +262,8 @@ ptmalloc_unlock_all2 __MALLOC_P((void))
{ {
mstate ar_ptr; mstate ar_ptr;
if(__malloc_initialized < 1)
return;
#if defined _LIBC || defined MALLOC_HOOKS #if defined _LIBC || defined MALLOC_HOOKS
tsd_setspecific(arena_key, save_arena); tsd_setspecific(arena_key, save_arena);
__malloc_hook = save_malloc_hook; __malloc_hook = save_malloc_hook;
@ -276,9 +285,6 @@ ptmalloc_unlock_all2 __MALLOC_P((void))
#endif /* !defined NO_THREADS */ #endif /* !defined NO_THREADS */
/* Already initialized? */
int __malloc_initialized = -1;
/* Initialization routine. */ /* Initialization routine. */
#ifdef _LIBC #ifdef _LIBC
#include <string.h> #include <string.h>