Skip to content

Commit 95601bd

Browse files
committed
[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. llvm-svn: 353955
1 parent 291713a commit 95601bd

File tree

4 files changed

+24
-12
lines changed

4 files changed

+24
-12
lines changed

libcxx/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,18 @@ int main(int, char**)
178178
M m3(std::move(m1), A());
179179
assert(m3 == m2);
180180
LIBCPP_ASSERT(m1.empty());
181-
assert(Counter_base::gConstructed == num+6);
181+
assert(Counter_base::gConstructed >= (int)(num+6));
182+
assert(Counter_base::gConstructed <= (int)(num+6+m1.size()));
182183

183184
{
184185
M m4(std::move(m2), A(5));
185-
assert(Counter_base::gConstructed == num+6);
186+
assert(Counter_base::gConstructed >= (int)(num+6));
187+
assert(Counter_base::gConstructed <= (int)(num+6+m1.size()+m2.size()));
186188
assert(m4 == m3);
187189
LIBCPP_ASSERT(m2.empty());
188190
}
189-
assert(Counter_base::gConstructed == num+3);
191+
assert(Counter_base::gConstructed >= (int)(num+3));
192+
assert(Counter_base::gConstructed <= (int)(num+3+m1.size()+m2.size()));
190193
}
191194
assert(Counter_base::gConstructed == 0);
192195
}

libcxx/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,18 @@ int main(int, char**)
178178
M m3(std::move(m1), A());
179179
assert(m3 == m2);
180180
LIBCPP_ASSERT(m1.empty());
181-
assert(Counter_base::gConstructed == 3*num);
181+
assert(Counter_base::gConstructed >= (int)(3*num));
182+
assert(Counter_base::gConstructed <= (int)(4*num));
182183

183184
{
184185
M m4(std::move(m2), A(5));
185-
assert(Counter_base::gConstructed == 3*num);
186+
assert(Counter_base::gConstructed >= (int)(3*num));
187+
assert(Counter_base::gConstructed <= (int)(5*num));
186188
assert(m4 == m3);
187189
LIBCPP_ASSERT(m2.empty());
188190
}
189-
assert(Counter_base::gConstructed == 2*num);
191+
assert(Counter_base::gConstructed >= (int)(2*num));
192+
assert(Counter_base::gConstructed <= (int)(4*num));
190193
}
191194
assert(Counter_base::gConstructed == 0);
192195
}

libcxx/test/std/containers/associative/multiset/multiset.cons/move_alloc.pass.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,15 +172,18 @@ int main(int, char**)
172172
M m3(std::move(m1), A());
173173
assert(m3 == m2);
174174
LIBCPP_ASSERT(m1.empty());
175-
assert(Counter_base::gConstructed == 3*num);
175+
assert(Counter_base::gConstructed >= (int)(3*num));
176+
assert(Counter_base::gConstructed <= (int)(4*num));
176177

177178
{
178179
M m4(std::move(m2), A(5));
179-
assert(Counter_base::gConstructed == 3*num);
180+
assert(Counter_base::gConstructed >= (int)(3*num));
181+
assert(Counter_base::gConstructed <= (int)(5*num));
180182
assert(m4 == m3);
181183
LIBCPP_ASSERT(m2.empty());
182184
}
183-
assert(Counter_base::gConstructed == 2*num);
185+
assert(Counter_base::gConstructed >= (int)(2*num));
186+
assert(Counter_base::gConstructed <= (int)(4*num));
184187
}
185188
assert(Counter_base::gConstructed == 0);
186189
}

libcxx/test/std/containers/associative/set/set.cons/move_alloc.pass.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,15 +172,18 @@ int main(int, char**)
172172
M m3(std::move(m1), A());
173173
assert(m3 == m2);
174174
LIBCPP_ASSERT(m1.empty());
175-
assert(Counter_base::gConstructed == 6+num);
175+
assert(Counter_base::gConstructed >= (int)(6+num));
176+
assert(Counter_base::gConstructed <= (int)(m1.size()+6+num));
176177

177178
{
178179
M m4(std::move(m2), A(5));
179-
assert(Counter_base::gConstructed == 6+num);
180+
assert(Counter_base::gConstructed >= (int)(6+num));
181+
assert(Counter_base::gConstructed <= (int)(m1.size()+m2.size()+6+num));
180182
assert(m4 == m3);
181183
LIBCPP_ASSERT(m2.empty());
182184
}
183-
assert(Counter_base::gConstructed == 3+num);
185+
assert(Counter_base::gConstructed >= (int)(3+num));
186+
assert(Counter_base::gConstructed <= (int)(m1.size()+m2.size()+3+num));
184187
}
185188
assert(Counter_base::gConstructed == 0);
186189
}

0 commit comments

Comments
 (0)