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

Paolo Carlini <paolo.carlini at oracle dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2013-09-13
           Assignee|unassigned at gcc dot gnu.org      |paolo.carlini at oracle 
dot com
     Ever confirmed|0                           |1

--- Comment #1 from Paolo Carlini <paolo.carlini at oracle dot com> ---
Urgh, thanks for your report. The move constructor is wrongly setting the
length "by hand" instead of using _M_set_length, per the below. I'm going to
commit the fix momentarily to mainline and 4_8-branch. Thanks again.

Index: include/ext/sso_string_base.h
===================================================================
--- include/ext/sso_string_base.h       (revision 202561)
+++ include/ext/sso_string_base.h       (working copy)
@@ -362,8 +362,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        }

       _M_length(__rcs._M_length());
-      __rcs._M_length(0);
       __rcs._M_data(__rcs._M_local_data);
+      __rcs._M_set_length(0);
     }
 #endif

Reply via email to