From 7dbcb3d40cfbda624bde75cba60ed3e484ee5a2c Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Fri, 16 May 2025 21:41:29 +0300 Subject: [PATCH 1/2] insert range invariant --- stl/inc/flat_set | 2 ++ tests/libcxx/expected_results.txt | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/stl/inc/flat_set b/stl/inc/flat_set index 4124d2b91c9..1ec4c6ce049 100644 --- a/stl/inc/flat_set +++ b/stl/inc/flat_set @@ -569,8 +569,10 @@ private: template void _Insert_range(const _Iter _First, const _Iter _Last) { const size_type _Old_size = size(); + _Clear_guard _Guard{this}; _Mycont.insert(_Mycont.end(), _First, _Last); _Restore_invariants_after_insert<_NeedSorting>(_Old_size); + _Guard._Target = nullptr; } template diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index b5428277793..5ac654291e7 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -324,10 +324,6 @@ std/containers/container.adaptors/flat.multiset/flat.multiset.cons/move_assign.p std/containers/container.adaptors/flat.set/flat.set.cons/move_assign.pass.cpp FAIL # FIXME! Assertion failed: std::is_sorted(m.begin(), m.end(), m.key_comp()) -std/containers/container.adaptors/flat.multiset/flat.multiset.modifiers/insert_initializer_list.pass.cpp FAIL -std/containers/container.adaptors/flat.multiset/flat.multiset.modifiers/insert_iter_iter.pass.cpp FAIL -std/containers/container.adaptors/flat.multiset/flat.multiset.modifiers/insert_sorted_initializer_list.pass.cpp FAIL -std/containers/container.adaptors/flat.multiset/flat.multiset.modifiers/insert_sorted_iter_iter.pass.cpp FAIL std/containers/container.adaptors/flat.set/flat.set.modifiers/emplace_hint.pass.cpp FAIL std/containers/container.adaptors/flat.set/flat.set.modifiers/emplace.pass.cpp FAIL std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_cv.pass.cpp FAIL From 4a03da772c85290c447dde4cb727dd4684923472 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Fri, 16 May 2025 22:19:19 +0300 Subject: [PATCH 2/2] more tests pass --- tests/libcxx/expected_results.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index 5ac654291e7..2c47e4078e9 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -327,13 +327,9 @@ std/containers/container.adaptors/flat.set/flat.set.cons/move_assign.pass.cpp FA std/containers/container.adaptors/flat.set/flat.set.modifiers/emplace_hint.pass.cpp FAIL std/containers/container.adaptors/flat.set/flat.set.modifiers/emplace.pass.cpp FAIL std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_cv.pass.cpp FAIL -std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_initializer_list.pass.cpp FAIL std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_iter_cv.pass.cpp FAIL -std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_iter_iter.pass.cpp FAIL std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_iter_rv.pass.cpp FAIL std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_rv.pass.cpp FAIL -std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_sorted_initializer_list.pass.cpp FAIL -std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_sorted_iter_iter.pass.cpp FAIL std/containers/container.adaptors/flat.set/flat.set.modifiers/insert_transparent.pass.cpp FAIL # FIXME! Assertion failed: r == m.begin() + 2