This is the mail archive of the
mailing list for the GCC project.
Re: [patch] Fix PR52822 (stable_partition move-assigns object to itself) in trunk, 4.7, and 4.6
- From: Paolo Carlini <paolo dot carlini at oracle dot com>
- To: Jeffrey Yasskin <jyasskin at googlers dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 04 Apr 2012 23:09:03 -0700
- Subject: Re: [patch] Fix PR52822 (stable_partition move-assigns object to itself) in trunk, 4.7, and 4.6
- References: <CANh-dXk6tS+L16G22s7zKJzqZGeSsgyHBX_stU_o_zdhNP5Bfw@mail.gmail.com>
A few small issues.
The attached patches fix http://gcc.gnu.org/PR52822, and have been
tested with `make check-c++` on linux-x86_64. The trunk patch applies
and tests cleanly on gcc-4_7-branch. The gcc-4_6-branch patch is
significantly simpler, as Paolo suggested on the bug.
For the 4.6 version of the patch, you want to use std::__addressof,
instead of simply &, which may be overloaded.
For the mainline/4.7 version, you want to cast __pred to bool:
!bool(__pred(*__first)). Also, isn't clear to me why you have
__local_len in __find_if_not_n instead of just working on __len (and in
any case please prefer just __local_len as condition instead of the
redundant __local_len != 0; likewise in many other similar situations).
Also, very minor nit, you will be touching the libstdc++-v3 Changelog
thus no libstdc++-v3 prefixes in the ChangeLog entry.