http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54392

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-08-28 
18:10:13 UTC ---
(In reply to comment #1)
> It is caused by revision 148850:
> 
> http://gcc.gnu.org/ml/gcc-cvs/2009-06/msg00833.html

That patch fixed a race condition, and it *is* correct to prevent writes to the
empty shared rep. If we reverted that patch we'd reintroduce the race, and
still erroneously write to the empty rep.

The underlying bug is in string::append() where it tries to write to it in the
first place. I think as well as checking _M_disjunct(__s) and _M_is_shared() we
should check whether we have the empty rep.

Reply via email to