aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog3
-rw-r--r--libstdc++-v3/include/ext/stl_rope.h6
2 files changed, 8 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 6326990..9ca9ce1 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,6 +1,9 @@
2003-05-06 Michael Ritzert <Ritzert@t-online.de>
+ Matt Kraai <kraai@alumni.cmu.edu>
* include/ext/stl_rope.h (_Rope_RopeRep<>::_M_c_string_lock): Tweak.
+ And retweak.
+
2003-05-06 Richard Sandiford <rsandifo@redhat.com>
* configure.target (mips*): Use the generic atomicity.h by default.
diff --git a/libstdc++-v3/include/ext/stl_rope.h b/libstdc++-v3/include/ext/stl_rope.h
index 8099b27..c8ada9c 100644
--- a/libstdc++-v3/include/ext/stl_rope.h
+++ b/libstdc++-v3/include/ext/stl_rope.h
@@ -500,7 +500,11 @@ struct _Rope_RopeRep : public _Rope_rep_base<_CharT,_Alloc>
# endif
_M_tag(__t), _M_is_balanced(__b), _M_depth(__d), _M_c_string(0)
#ifdef __GTHREAD_MUTEX_INIT
- { _M_c_string_lock = __GTHREAD_MUTEX_INIT; }
+ {
+ // Do not copy a POSIX/gthr mutex once in use. However, bits are bits.
+ __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
+ _M_c_string_lock = __tmp;
+ }
#else
{ __GTHREAD_MUTEX_INIT_FUNCTION (&_M_c_string_lock); }
#endif