From: bkoz Date: Sun, 7 Mar 2004 02:17:19 +0000 (+0000) Subject: 2004-03-06 Benjamin Kosnik X-Git-Tag: upstream/4.9.2~72479 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a43386fdcbdaae331173f230c5ccbe2acb76c3c5;p=platform%2Fupstream%2Flinaro-gcc.git 2004-03-06 Benjamin Kosnik * include/ext/mt_allocator.h (_S_initialize): If !__GTHREAD_MUTEX_INIT, then initialize _S_thread_freelist_mutex. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79044 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 2f36a46..36decc1 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,10 @@ 2004-03-06 Benjamin Kosnik + * include/ext/mt_allocator.h (_S_initialize): If + !__GTHREAD_MUTEX_INIT, then initialize _S_thread_freelist_mutex. + +2004-03-06 Benjamin Kosnik + PR libstdc++/12658 * src/locale_init.cc (locale::locale): Lock critical regions with external mutexes. diff --git a/libstdc++-v3/include/ext/mt_allocator.h b/libstdc++-v3/include/ext/mt_allocator.h index 1bcff03..7b42300 100644 --- a/libstdc++-v3/include/ext/mt_allocator.h +++ b/libstdc++-v3/include/ext/mt_allocator.h @@ -548,7 +548,7 @@ namespace __gnu_cxx { if (_S_options._M_force_new) return; - + // Calculate the number of bins required based on _M_max_bytes. // _S_bin_size is statically-initialized to one. size_t bin_size = 1; @@ -598,6 +598,11 @@ namespace __gnu_cxx _S_thread_freelist_first[i - 1].next = NULL; _S_thread_freelist_first[i - 1].id = i; + + // Make sure this is initialized. +#ifndef __GTHREAD_MUTEX_INIT + __GTHREAD_MUTEX_INIT_FUNCTION(&_S_thread_freelist_mutex); +#endif // Initialize per thread key to hold pointer to // _S_thread_freelist. __gthread_key_create(&_S_thread_key, _S_destroy_thread_key); @@ -745,7 +750,6 @@ namespace __gnu_cxx #ifdef __GTHREAD_MUTEX_INIT __mt_alloc<_Tp>::_S_thread_freelist_mutex = __GTHREAD_MUTEX_INIT; #else - // XXX __mt_alloc<_Tp>::_S_thread_freelist_mutex; #endif #endif