mt_allocator.h (_S_initialize): If !__GTHREAD_MUTEX_INIT, then initialize _S_thread_f...
authorBenjamin Kosnik <bkoz@redhat.com>
Sun, 7 Mar 2004 02:17:19 +0000 (02:17 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Sun, 7 Mar 2004 02:17:19 +0000 (02:17 +0000)
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.

From-SVN: r79044

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

index 2f36a46b46167150a2d16c4f17cd347c04a34e1f..36decc1b2a87e66cc74f2860654630f8ca63662e 100644 (file)
@@ -1,3 +1,8 @@
+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
index 1bcff03356dceb580d462b29eee7549f967f523c..7b42300ba46191d44ba7c6a07dbbf545f1d6d715 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