zeek/testing/btest/language/uninitialized-local.bro
Jon Siwek 67484a90fa GH-211: improve consistency of how scripting errors are handled
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.
2019-01-30 11:20:09 -06:00

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();
}