Remove loops from Dict iterator invalidation unit test

This fixes Coverity finding 1490366
This commit is contained in:
Tim Wojtulewicz 2022-07-01 14:35:54 -07:00
parent ba968434e4
commit 035c543e9f

View file

@ -350,8 +350,7 @@ TEST_CASE("dict iterator invalidation")
detail::HashKey* it_key; detail::HashKey* it_key;
bool iterators_invalidated = false; bool iterators_invalidated = false;
for ( auto it = dict.begin(); it != dict.end(); ++it ) auto it = dict.begin();
{
iterators_invalidated = false; iterators_invalidated = false;
dict.Remove(key3, &iterators_invalidated); dict.Remove(key3, &iterators_invalidated);
// Key doesn't exist, nothing to remove, iteration not invalidated. // Key doesn't exist, nothing to remove, iteration not invalidated.
@ -366,17 +365,12 @@ TEST_CASE("dict iterator invalidation")
dict.Remove(key2, &iterators_invalidated); dict.Remove(key2, &iterators_invalidated);
// Key exists, gets removed, iteration is invalidated. // Key exists, gets removed, iteration is invalidated.
CHECK(iterators_invalidated); CHECK(iterators_invalidated);
break;
}
for ( auto it = dict.begin(); it != dict.end(); ++it ) it = dict.begin();
{
iterators_invalidated = false; iterators_invalidated = false;
dict.Insert(key3, &val3, &iterators_invalidated); dict.Insert(key3, &val3, &iterators_invalidated);
// Key doesn't exist, gets inserted, iteration is invalidated. // Key doesn't exist, gets inserted, iteration is invalidated.
CHECK(iterators_invalidated); CHECK(iterators_invalidated);
break;
}
CHECK(dict.Length() == 2); CHECK(dict.Length() == 2);
CHECK(*static_cast<uint32_t*>(dict.Lookup(key)) == val2); CHECK(*static_cast<uint32_t*>(dict.Lookup(key)) == val2);