]> git.ipfire.org Git - thirdparty/gcc.git/commit - libstdc++-v3/testsuite/23_containers/vector/debug/insert6_neg.cc
re PR libstdc++/57779 (vector insert fails to diagnose iterators pointing into *this...
authorFrançois Dumont <fdumont@gcc.gnu.org>
Thu, 1 Aug 2013 19:54:46 +0000 (19:54 +0000)
committerFrançois Dumont <fdumont@gcc.gnu.org>
Thu, 1 Aug 2013 19:54:46 +0000 (19:54 +0000)
commit5720787ada5aa74f244b3bc699f4abd991bee425
treeed377bb0e83876a241613b80cb260f9f91684479
parent0bd729015ccfab7dd1d535fa7a7c17afbda28017
re PR libstdc++/57779 (vector insert fails to diagnose iterators pointing into *this in debug mode)

2013-08-01  François Dumont  <fdumont@gcc.gnu.org>

PR libstdc++/57779
* include/debug/formatter.h (_Debug_msg_id): Add
__msg_insert_itself_range entry.
* include/debug/functions.h (_Insert_range_from_self_is_safe<>):
New, indicate container types supporting self range insertion in
GNU implementation.
(__foreign_iterator): New, check if an iterator points to a given
sequence.
* include/debug/macros.h (__glibcxx_check_insert_range): Add check
using __foreign_iterator.
(__gibcxx_check_insert_range_after): Likewise.
* include/debug/string (_Insert_range_from_self_is_safe<>):
Partially specialized to mark __gnu_debug::basic_string<> as
supporting self range insert.
* include/debug/list (_Insert_range_from_self_is_safe<>):
Partially specialized to mark std::list as supporting self range
insert if _GLIBCXX_DEBUG_PEDANTIC is not defined.
* include/debug/forward_list (_Insert_range_from_self_is_safe<>):
Likewise.
* src/c++11/debug.cc (_S_debug_messages): Add
__msg_insert_itself_range_entry message.
(_Error_formatter::_Parameter::_M_print_description): Display
iterator sequence address rather than sequence address when the
parameter type is an iterator.
(_Error_formatter::_M_print_word): Enhance behavior when
displaying a word with an appended '\n'.
* testsuite/util/debug/checks.h (check_insert4<>): New.
* testsuite/23_containers/deque/debug/insert5_neg.cc: New.
* testsuite/23_containers/vector/debug/insert5_neg.cc: Likewise.
* testsuite/23_containers/vector/debug/insert6_neg.cc: Likewise.
* testsuite/23_containers/vector/debug/57779_neg.cc: Likewise.
* testsuite/23_containers/list/debug/insert5_neg.cc: Likewise.
* testsuite/23_containers/forward_list/debug/insert_after4_neg.cc:
Likewise.

From-SVN: r201416
15 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/include/debug/formatter.h
libstdc++-v3/include/debug/forward_list
libstdc++-v3/include/debug/functions.h
libstdc++-v3/include/debug/list
libstdc++-v3/include/debug/macros.h
libstdc++-v3/include/debug/string
libstdc++-v3/src/c++11/debug.cc
libstdc++-v3/testsuite/23_containers/deque/debug/insert5_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after4_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/list/debug/insert5_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/vector/debug/insert5_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/vector/debug/insert6_neg.cc [new file with mode: 0644]
libstdc++-v3/testsuite/util/debug/checks.h