OSDN Git Service

2004-03-06 Benjamin Kosnik <bkoz@redhat.com>
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Mar 2004 02:17:19 +0000 (02:17 +0000)
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Mar 2004 02:17:19 +0000 (02:17 +0000)
* 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

libstdc++-v3/ChangeLog
libstdc++-v3/include/ext/mt_allocator.h

index 2f36a46..36decc1 100644 (file)
@@ -1,5 +1,10 @@
 2004-03-06  Benjamin Kosnik  <bkoz@redhat.com>
 
+       * include/ext/mt_allocator.h (_S_initialize): If
+       !__GTHREAD_MUTEX_INIT, then initialize _S_thread_freelist_mutex.
+
+2004-03-06  Benjamin Kosnik  <bkoz@redhat.com>
+
        PR libstdc++/12658
        * src/locale_init.cc (locale::locale): Lock critical regions with
        external mutexes.
index 1bcff03..7b42300 100644 (file)
@@ -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