[Bug libstdc++/60587] [4.9 Regression] debug-mode -std=c++11 vector::insert(pos, begin, end) dereferences begin too eagerly

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Mar 21 18:54:00 GMT 2014


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

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Author: redi
Date: Fri Mar 21 18:54:06 2014
New Revision: 208755

URL: http://gcc.gnu.org/viewcvs?rev=208755&root=gcc&view=rev
Log:
    PR libstdc++/60587
    * include/debug/functions.h (_Is_contiguous_sequence): Define.
    (__foreign_iterator): Accept additional iterator. Do not dispatch on
    iterator category.
    (__foreign_iterator_aux2): Likewise. Add overload for iterators
    from different types of debug container. Use _Is_contiguous_sequence
    instead of is_lvalue_reference.
    (__foreign_iterator_aux3): Accept additional iterator. Avoid
    dereferencing past-the-end iterator.
    (__foreign_iterator_aux4): Use const value_type* instead of
    potentially user-defined const_pointer type.
    * include/debug/macros.h (__glibcxx_check_insert_range): Fix comment
    and pass end iterator to __gnu_debug::__foreign_iterator.
    (__glibcxx_check_insert_range_after): Likewise.
    (__glibcxx_check_max_load_factor): Fix comment.
    * include/debug/vector (_Is_contiguous_sequence): Define partial
    specializations.
    * testsuite/23_containers/vector/debug/57779_neg.cc: Remove
    -std=gnu++11 option and unused header.
    * testsuite/23_containers/vector/debug/60587.cc: New.
    * testsuite/23_containers/vector/debug/60587_neg.cc: New.

Added:
    trunk/libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc
      - copied, changed from r208753,
trunk/libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc
    trunk/libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc
      - copied, changed from r208753,
trunk/libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc
Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/debug/functions.h
    trunk/libstdc++-v3/include/debug/macros.h
    trunk/libstdc++-v3/include/debug/vector
    trunk/libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc



More information about the Gcc-bugs mailing list