mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
GH-1328: Improve behavior of Dictionary iterator invalidation
Previously, an assertion was triggered in debug builds upon any attempt to insert or remove a Dictionary entry while any iteration of that Dictionary is underway and also even in cases where Dictionary membership was not actually modified (and thus invalidates a loop). Now, it emits run-time warnings regardless of build-type and only when insert/remove operations truly change the Dictionary membership. In the context of a Zeek script causing an invalidation, the warning message also now helps pinpoint the exact expression that causes it.
This commit is contained in:
parent
9d8bab692c
commit
8f98b068c8
7 changed files with 287 additions and 35 deletions
|
@ -0,0 +1,42 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
warning in <...>/table-set-iterator-invalidation.zeek, line 21: possible loop/iterator invalidation caused by expression: t[4]
|
||||
warning in <...>/table-set-iterator-invalidation.zeek, line 30: possible loop/iterator invalidation caused by expression: t[4]
|
||||
warning in <...>/table-set-iterator-invalidation.zeek, line 53: possible loop/iterator invalidation caused by expression: s[4]
|
||||
warning in <...>/table-set-iterator-invalidation.zeek, line 62: possible loop/iterator invalidation caused by expression: s[4]
|
||||
{
|
||||
[2] = 2,
|
||||
[1] = 1,
|
||||
[3] = 3
|
||||
}
|
||||
{
|
||||
[2] = 2,
|
||||
[4] = four,
|
||||
[3] = 3,
|
||||
[1] = 1
|
||||
}
|
||||
{
|
||||
[2] = 2,
|
||||
[1] = 1,
|
||||
[3] = 3
|
||||
}
|
||||
{
|
||||
[2] = 2,
|
||||
[1] = 1,
|
||||
[3] = 3
|
||||
}
|
||||
{
|
||||
2,
|
||||
4,
|
||||
3,
|
||||
1
|
||||
}
|
||||
{
|
||||
2,
|
||||
1,
|
||||
3
|
||||
}
|
||||
{
|
||||
2,
|
||||
1,
|
||||
3
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue