diff options
author | Louis Dionne <ldionne@apple.com> | 2019-02-13 16:43:44 +0000 |
---|---|---|
committer | Louis Dionne <ldionne@apple.com> | 2019-02-13 16:43:44 +0000 |
commit | 712d476de34e15f9fec9841c39b02b2993ff28ae (patch) | |
tree | 205a7e74b855cdc7370c4fc02663f33060d8358d | |
parent | af15bb4cdfc82d030d5826b0ecdc915652cacb80 (diff) | |
download | libcxx-712d476de34e15f9fec9841c39b02b2993ff28ae.tar.gz |
[libcxx] Do not assume the number of elements in a moved-from associative container
Reviewed as https://reviews.llvm.org/D57903.
Thanks to Andrey Maksimov for the patch.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@353955 91177308-0d34-0410-b5e6-96231b3b80d8
4 files changed, 24 insertions, 12 deletions
diff --git a/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp b/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp index aa87e9ff0..cc22a4c34 100644 --- a/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp +++ b/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp @@ -178,15 +178,18 @@ int main(int, char**) M m3(std::move(m1), A()); assert(m3 == m2); LIBCPP_ASSERT(m1.empty()); - assert(Counter_base::gConstructed == num+6); + assert(Counter_base::gConstructed >= (int)(num+6)); + assert(Counter_base::gConstructed <= (int)(num+6+m1.size())); { M m4(std::move(m2), A(5)); - assert(Counter_base::gConstructed == num+6); + assert(Counter_base::gConstructed >= (int)(num+6)); + assert(Counter_base::gConstructed <= (int)(num+6+m1.size()+m2.size())); assert(m4 == m3); LIBCPP_ASSERT(m2.empty()); } - assert(Counter_base::gConstructed == num+3); + assert(Counter_base::gConstructed >= (int)(num+3)); + assert(Counter_base::gConstructed <= (int)(num+3+m1.size()+m2.size())); } assert(Counter_base::gConstructed == 0); } diff --git a/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp b/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp index 712afbeaa..4505cd216 100644 --- a/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp +++ b/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp @@ -178,15 +178,18 @@ int main(int, char**) M m3(std::move(m1), A()); assert(m3 == m2); LIBCPP_ASSERT(m1.empty()); - assert(Counter_base::gConstructed == 3*num); + assert(Counter_base::gConstructed >= (int)(3*num)); + assert(Counter_base::gConstructed <= (int)(4*num)); { M m4(std::move(m2), A(5)); - assert(Counter_base::gConstructed == 3*num); + assert(Counter_base::gConstructed >= (int)(3*num)); + assert(Counter_base::gConstructed <= (int)(5*num)); assert(m4 == m3); LIBCPP_ASSERT(m2.empty()); } - assert(Counter_base::gConstructed == 2*num); + assert(Counter_base::gConstructed >= (int)(2*num)); + assert(Counter_base::gConstructed <= (int)(4*num)); } assert(Counter_base::gConstructed == 0); } diff --git a/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp b/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp index 1abe5b928..3727c143d 100644 --- a/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp +++ b/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp @@ -172,15 +172,18 @@ int main(int, char**) M m3(std::move(m1), A()); assert(m3 == m2); LIBCPP_ASSERT(m1.empty()); - assert(Counter_base::gConstructed == 3*num); + assert(Counter_base::gConstructed >= (int)(3*num)); + assert(Counter_base::gConstructed <= (int)(4*num)); { M m4(std::move(m2), A(5)); - assert(Counter_base::gConstructed == 3*num); + assert(Counter_base::gConstructed >= (int)(3*num)); + assert(Counter_base::gConstructed <= (int)(5*num)); assert(m4 == m3); LIBCPP_ASSERT(m2.empty()); } - assert(Counter_base::gConstructed == 2*num); + assert(Counter_base::gConstructed >= (int)(2*num)); + assert(Counter_base::gConstructed <= (int)(4*num)); } assert(Counter_base::gConstructed == 0); } diff --git a/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp b/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp index db7933e92..63ec29689 100644 --- a/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp +++ b/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp @@ -172,15 +172,18 @@ int main(int, char**) M m3(std::move(m1), A()); assert(m3 == m2); LIBCPP_ASSERT(m1.empty()); - assert(Counter_base::gConstructed == 6+num); + assert(Counter_base::gConstructed >= (int)(6+num)); + assert(Counter_base::gConstructed <= (int)(m1.size()+6+num)); { M m4(std::move(m2), A(5)); - assert(Counter_base::gConstructed == 6+num); + assert(Counter_base::gConstructed >= (int)(6+num)); + assert(Counter_base::gConstructed <= (int)(m1.size()+m2.size()+6+num)); assert(m4 == m3); LIBCPP_ASSERT(m2.empty()); } - assert(Counter_base::gConstructed == 3+num); + assert(Counter_base::gConstructed >= (int)(3+num)); + assert(Counter_base::gConstructed <= (int)(m1.size()+m2.size()+3+num)); } assert(Counter_base::gConstructed == 0); } |