OSDN Git Service

* include/ext/mt_allocator.h: Portability.
authorljrittle <ljrittle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Jun 2003 06:34:34 +0000 (06:34 +0000)
committerljrittle <ljrittle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Jun 2003 06:34:34 +0000 (06:34 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68406 138bc75d-0d04-0410-961f-82ee72b054a4

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

index e2c9ce9..c1acd15 100644 (file)
@@ -7,6 +7,8 @@
        * config/abi/alpha-freebsd5/baseline_symbols.txt: New file.
        * config/abi/sparc-freebsd5/baseline_symbols.txt: New file.
 
+       * include/ext/mt_allocator.h: Portability.
+
 2003-06-23  Benjamin Kosnik  <bkoz@redhat.com>
 
        * docs/html/17_intro/libstdc++-assign.txt: Update address.
index 1e95b55..cd3b273 100644 (file)
@@ -613,13 +613,15 @@ namespace __gnu_cxx
           if (!_S_bin[bin].mutex) 
             __throw_bad_alloc();
 
-          /*
-           * This is not only ugly - it's extremly non-portable!
-           * However gthr.h does not currently provide a
-           * __gthread_mutex_init() call. The correct solution to
-           * this problem needs to be discussed.
-           */
-          pthread_mutex_init(_S_bin[bin].mutex, NULL);
+#ifdef __GTHREAD_MUTEX_INIT
+         {
+           // Do not copy a POSIX/gthr mutex once in use.
+           __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+           *_S_bin[bin].mutex = __tmp;
+         }
+#else
+         { __GTHREAD_MUTEX_INIT_FUNCTION (_S_bin[bin].mutex); }
+#endif
 #endif
 
           for (size_t thread = 0; thread <= _S_max_threads; thread++)