diff options
author | Jeffrey Yasskin <jyasskin@google.com> | 2012-04-12 20:59:09 +0000 |
---|---|---|
committer | Jeffrey Yasskin <jyasskin@gcc.gnu.org> | 2012-04-12 20:59:09 +0000 |
commit | 2fc9b37dd021df4f3edbda3be09bd891b5bf71e3 (patch) | |
tree | da264b4ef9803a0d4515217be60b6052e22a7450 /libstdc++-v3/ChangeLog | |
parent | a2547fd0d6cd351ec7fe366d770aaea296d7f70d (diff) | |
download | gcc-2fc9b37dd021df4f3edbda3be09bd891b5bf71e3.zip gcc-2fc9b37dd021df4f3edbda3be09bd891b5bf71e3.tar.gz gcc-2fc9b37dd021df4f3edbda3be09bd891b5bf71e3.tar.bz2 |
Fix PR52822 (stable_partition move-assigns object to itself) by scanning for...
Fix PR52822 (stable_partition move-assigns object to itself) by
scanning for the first value that doesn't match the predicate before
starting to rearrange values.
2012-04-03 Jeffrey Yasskin <jyasskin@google.com>
PR libstdc++/52822
* include/bits/stl_algo.h (__find_if_not): Expose in
C++98 mode.
(__find_if_not_n): Like __find_if_not, but works on and updates a
counted range instead of a bounded range.
(stable_partition): Guarantee !__pred(*__first) in call to
__stable_partition_adaptive() or __inplace_stable_partition().
(__stable_partition_adaptive): Use new precondition to avoid
moving/copying objects onto themselves. Guarantee new
precondition to recursive calls.
(__inplace_stable_partition): Use new precondition to simplify
base case, remove __last parameter. Guarantee new precondition to
recursive calls.
* testsuite/25_algorithms/stable_partition/moveable.cc (test02):
Test a sequence that starts with a value matching the predicate.
* testsuite/25_algorithms/stable_partition/pr52822.cc:
Test vectors, which have a destructive self-move-assignment.
From-SVN: r186391
Diffstat (limited to 'libstdc++-v3/ChangeLog')
-rw-r--r-- | libstdc++-v3/ChangeLog | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ff5f276..11f4b7c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,22 @@ +2012-04-12 Jeffrey Yasskin <jyasskin@google.com> + + PR libstdc++/52822 + * include/bits/stl_algo.h (__find_if_not): Expose in C++98 mode. + (__find_if_not_n): Like __find_if_not, but works on and updates a + counted range instead of a bounded range. + (stable_partition): Guarantee !__pred(*__first) in call to + __stable_partition_adaptive() or __inplace_stable_partition(). + (__stable_partition_adaptive): Use new precondition to avoid + moving/copying objects onto themselves. Guarantee new + precondition to recursive calls. + (__inplace_stable_partition): Use new precondition to simplify + base case, remove __last parameter. Guarantee new precondition to + recursive calls. + * testsuite/25_algorithms/stable_partition/moveable.cc (test02): + Test a sequence that starts with a value matching the predicate. + * testsuite/25_algorithms/stable_partition/pr52822.cc: Test + vectors, which have a destructive self-move-assignment. + 2012-04-12 Andreas Schwab <schwab@linux-m68k.org> * testsuite/Makefile.am (check_DEJAGNUnormal0): Run |