mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00

Scripting errors/mistakes now consistently generate a runtime error which have the behavior of unwinding the call stack all the way out of the current event handler. Before, such errors were not treated consistently and either aborted the process entirely or emitted a message while continuing to execute subsequent statements without well-defined behavior (possibly causing a cascade of errors). The previous behavior also would only unwind out of the current function (if within a function body), not out the current event handler, which is especially problematic for functions that return a value: the caller is essentially left a mess with no way to deal with it. This also changes the behavior of the startup/initialization process to abort if there's errors during bro_init() rather than continue one to the main run loop. The `allow_init_errors` option may change this new, default behavior.
22 lines
556 B
Text
22 lines
556 B
Text
# @TEST-EXEC: bro -b %INPUT >out 2>&1
|
|
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out
|
|
|
|
event testit() &priority=10
|
|
{
|
|
local my_count: count = 10;
|
|
}
|
|
|
|
event testit()
|
|
{
|
|
# my_string's value occupies same Frame offset as my_count's from above
|
|
# handler, but execution of this handler body should still "initialize"
|
|
# it to a null value instead of referring to a left-over value of my_count.
|
|
local my_string: string;
|
|
local my_vector: vector of string;
|
|
my_vector[0] = my_string;
|
|
}
|
|
|
|
event bro_init()
|
|
{
|
|
event testit();
|
|
}
|