From: Arthur O'Dwyer Date: Tue, 20 Apr 2021 19:38:57 +0000 (-0400) Subject: [libc++] [LIBCXX-DEBUG-FIXME] Stop using invalid iterators to insert into sets/maps. X-Git-Tag: llvmorg-14-init~7514 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9ea2db2c513534aa63acc087b8dc744c37119d02;p=platform%2Fupstream%2Fllvm.git [libc++] [LIBCXX-DEBUG-FIXME] Stop using invalid iterators to insert into sets/maps. This simply applies Howard's commit 4c80bfbd53caf consistently across all the associative and unordered container tests. "unord.set/insert_hint_const_lvalue.pass.cpp" failed with `-D_LIBCPP_DEBUG=1` before this patch; it was the only one that incorrectly reused invalid iterator `e`. The others already used valid iterators (generally `c.end()`); I'm just making them all match the same pattern of usage: "e, then r, then c.end() for the rest." Differential Revision: https://reviews.llvm.org/D101679 --- diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_const_lvalue.pass.cpp index cf18daf..208d4827 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_const_lvalue.pass.cpp @@ -35,7 +35,7 @@ void do_insert_hint_const_lvalue_test() assert(r->second == 3); const VT v2(3.5, 4); - r = c.insert(c.end(), v2); + r = c.insert(r, v2); assert(c.size() == 1); assert(r->first == 3.5); assert(r->second == 3); diff --git a/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_rvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_rvalue.pass.cpp index 48293d0..44ed227 100644 --- a/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_rvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_hint_rvalue.pass.cpp @@ -38,7 +38,7 @@ int main(int, char**) assert(r->first == 3.5); assert(r->second == 3); - r = c.insert(c.end(), P(3.5, static_cast(4))); + r = c.insert(r, P(3.5, static_cast(4))); assert(c.size() == 1); assert(r->first == 3.5); assert(r->second == 3); @@ -64,7 +64,7 @@ int main(int, char**) assert(r->first == 3); assert(r->second == 3); - r = c.insert(c.end(), P(3, 4)); + r = c.insert(r, P(3, 4)); assert(c.size() == 1); assert(r->first == 3); assert(r->second == 3); @@ -91,7 +91,7 @@ int main(int, char**) assert(r->first == 3.5); assert(r->second == 3); - r = c.insert(c.end(), P(3.5, static_cast(4))); + r = c.insert(r, P(3.5, static_cast(4))); assert(c.size() == 1); assert(r->first == 3.5); assert(r->second == 3); @@ -118,7 +118,7 @@ int main(int, char**) assert(r->first == 3); assert(r->second == 3); - r = c.insert(c.end(), P(3, 4)); + r = c.insert(r, P(3, 4)); assert(c.size() == 1); assert(r->first == 3); assert(r->second == 3); @@ -143,7 +143,7 @@ int main(int, char**) assert(r->first == 3.5); assert(r->second == 3); - r = c.insert(c.end(), {3.5, 4}); + r = c.insert(r, {3.5, 4}); assert(c.size() == 1); assert(r->first == 3.5); assert(r->second == 3); diff --git a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_const_lvalue.pass.cpp index cb79ddf..b3a5487 100644 --- a/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_hint_const_lvalue.pass.cpp @@ -35,7 +35,7 @@ void do_insert_const_lvalue_test() assert(r->second == 3); const VT v2(3.5, 4); - r = c.insert(c.end(), v2); + r = c.insert(r, v2); assert(c.size() == 2); assert(r->first == 3.5); assert(r->second == 4); diff --git a/libcxx/test/std/containers/unord/unord.multiset/insert_hint_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.multiset/insert_hint_const_lvalue.pass.cpp index 461428e..a33cada 100644 --- a/libcxx/test/std/containers/unord/unord.multiset/insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.multiset/insert_hint_const_lvalue.pass.cpp @@ -33,7 +33,7 @@ void do_insert_hint_const_lvalue_test() assert(c.size() == 1); assert(*r == 3.5); - r = c.insert(c.end(), v1); + r = c.insert(r, v1); assert(c.size() == 2); assert(*r == 3.5); diff --git a/libcxx/test/std/containers/unord/unord.set/insert_hint_const_lvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.set/insert_hint_const_lvalue.pass.cpp index f0cf2b9..16a9766 100644 --- a/libcxx/test/std/containers/unord/unord.set/insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/insert_hint_const_lvalue.pass.cpp @@ -6,8 +6,6 @@ // //===----------------------------------------------------------------------===// -// UNSUPPORTED: LIBCXX-DEBUG-FIXME - // // template , class Pred = equal_to, @@ -35,17 +33,17 @@ void do_insert_hint_const_lvalue_test() assert(c.size() == 1); assert(*r == 3.5); - r = c.insert(e, v1); + r = c.insert(r, v1); assert(c.size() == 1); assert(*r == 3.5); const VT v2(4.5); - r = c.insert(e, v2); + r = c.insert(c.end(), v2); assert(c.size() == 2); assert(*r == 4.5); const VT v3(5.5); - r = c.insert(e, v3); + r = c.insert(c.end(), v3); assert(c.size() == 3); assert(*r == 5.5); } diff --git a/libcxx/test/std/containers/unord/unord.set/insert_hint_rvalue.pass.cpp b/libcxx/test/std/containers/unord/unord.set/insert_hint_rvalue.pass.cpp index 1ec66ee..de67a91 100644 --- a/libcxx/test/std/containers/unord/unord.set/insert_hint_rvalue.pass.cpp +++ b/libcxx/test/std/containers/unord/unord.set/insert_hint_rvalue.pass.cpp @@ -28,7 +28,8 @@ int main(int, char**) typedef C::iterator R; typedef double P; C c; - R r = c.insert(c.end(), P(3.5)); + typename C::const_iterator e = c.end(); + R r = c.insert(e, P(3.5)); assert(c.size() == 1); assert(*r == 3.5); @@ -50,7 +51,8 @@ int main(int, char**) typedef C::iterator R; typedef MoveOnly P; C c; - R r = c.insert(c.end(), P(3)); + typename C::const_iterator e = c.end(); + R r = c.insert(e, P(3)); assert(c.size() == 1); assert(*r == 3); @@ -72,7 +74,8 @@ int main(int, char**) typedef C::iterator R; typedef double P; C c; - R r = c.insert(c.end(), P(3.5)); + typename C::const_iterator e = c.end(); + R r = c.insert(e, P(3.5)); assert(c.size() == 1); assert(*r == 3.5); @@ -94,7 +97,8 @@ int main(int, char**) typedef C::iterator R; typedef MoveOnly P; C c; - R r = c.insert(c.end(), P(3)); + typename C::const_iterator e = c.end(); + R r = c.insert(e, P(3)); assert(c.size() == 1); assert(*r == 3);