This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [PATCH] Fix PR80183 : _M_color not moved
- From: Jonathan Wakely <jwakely at redhat dot com>
- To: Markus Trippelsdorf <markus at trippelsdorf dot de>
- Cc: gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Date: Sun, 26 Mar 2017 13:23:32 +0100
- Subject: Re: [PATCH] Fix PR80183 : _M_color not moved
- Authentication-results: sourceware.org; auth=none
- Authentication-results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
- Authentication-results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=jwakely at redhat dot com
- Dkim-filter: OpenDKIM Filter v2.11.0 mx1.redhat.com DD0AB1555E
- Dmarc-filter: OpenDMARC Filter v1.3.2 mx1.redhat.com DD0AB1555E
- References: <20170326095438.GA299@x4>
On 26/03/17 11:54 +0200, Markus Trippelsdorf wrote:
clang-format stopped working when compiled with gcc-7.
It turned out that an uninitialized _M_color is responsible.
The fix is easy, just copy _M_color in the move case, too.
Tested on ppc64le.
OK for trunk?
OK, thanks.
A reduced testcase would be nice, in case we ever get the ability to
run the testsuite under valgrind and/or ubsan. Please commit the fix
anyway though, a testcase can come later.
Thanks.
PR libstdc++/80183
* include/bits/stl_tree.h:
(_Rb_tree_header::_M_move_data(_Rb_tree_header&)): Also save _M_color.
diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h
index cbcf7f2606f..ce7ecdaa87a 100644
--- a/libstdc++-v3/include/bits/stl_tree.h
+++ b/libstdc++-v3/include/bits/stl_tree.h
@@ -192,6 +192,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
void
_M_move_data(_Rb_tree_header& __from)
{
+ _M_header._M_color = __from._M_header._M_color;
_M_header._M_parent = __from._M_header._M_parent;
_M_header._M_left = __from._M_header._M_left;
_M_header._M_right = __from._M_header._M_right;
--
Markus