mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Remove loops from Dict iterator invalidation unit test
This fixes Coverity finding 1490366
This commit is contained in:
parent
ba968434e4
commit
035c543e9f
1 changed files with 18 additions and 24 deletions
42
src/Dict.cc
42
src/Dict.cc
|
@ -350,33 +350,27 @@ 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.
|
CHECK(! iterators_invalidated);
|
||||||
CHECK(! iterators_invalidated);
|
|
||||||
|
|
||||||
iterators_invalidated = false;
|
iterators_invalidated = false;
|
||||||
dict.Insert(key, &val2, &iterators_invalidated);
|
dict.Insert(key, &val2, &iterators_invalidated);
|
||||||
// Key exists, value gets overwritten, iteration not invalidated.
|
// Key exists, value gets overwritten, iteration not invalidated.
|
||||||
CHECK(! iterators_invalidated);
|
CHECK(! iterators_invalidated);
|
||||||
|
|
||||||
iterators_invalidated = false;
|
iterators_invalidated = false;
|
||||||
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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue