mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
crash fixes for constructs that expect add/delete expressions to return values
This commit is contained in:
parent
c6011e2160
commit
fe5c953d31
4 changed files with 22 additions and 5 deletions
|
@ -220,9 +220,9 @@ bool Expr::CanAdd() const { return false; }
|
|||
|
||||
bool Expr::CanDel() const { return false; }
|
||||
|
||||
TypePtr Expr::AddType() const { return nullptr; }
|
||||
TypePtr Expr::AddType() const { return base_type(TYPE_VOID); }
|
||||
|
||||
TypePtr Expr::DelType() const { return nullptr; }
|
||||
TypePtr Expr::DelType() const { return base_type(TYPE_VOID); }
|
||||
|
||||
ValPtr Expr::Add(Frame* /* f */) { Internal("Expr::Add called"); }
|
||||
|
||||
|
|
|
@ -730,9 +730,10 @@ ExprPtr AddExpr::BuildSub(const ExprPtr& op1, const ExprPtr& op2) {
|
|||
}
|
||||
|
||||
ExprPtr AggrAddDelExpr::Reduce(Reducer* c, StmtPtr& red_stmt) {
|
||||
if ( type )
|
||||
return UnaryExpr::Reduce(c, red_stmt);
|
||||
|
||||
// In the future, if we use add/delete for list operations or such,
|
||||
// then the following becomes germane.
|
||||
// if ( type )
|
||||
// return UnaryExpr::Reduce(c, red_stmt);
|
||||
if ( c->Optimizing() )
|
||||
op = c->UpdateExpr(op);
|
||||
|
||||
|
|
3
testing/btest/Baseline/language.add-del-expr-void/out
Normal file
3
testing/btest/Baseline/language.add-del-expr-void/out
Normal file
|
@ -0,0 +1,3 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
error in <...>/add-del-expr-void.zeek, line 10: can't assign void value (my_any1 = add my_set[3])
|
||||
error in <...>/add-del-expr-void.zeek, line 11: can't assign void value (my_any2 = delete my_set[5])
|
13
testing/btest/language/add-del-expr-void.zeek
Normal file
13
testing/btest/language/add-del-expr-void.zeek
Normal file
|
@ -0,0 +1,13 @@
|
|||
# @TEST-DOC: checks for type-checking for add/delete expressions
|
||||
#
|
||||
# @TEST-EXEC-FAIL: zeek -b %INPUT >out 2>&1
|
||||
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out
|
||||
|
||||
global my_set: set[count];
|
||||
|
||||
event zeek_init()
|
||||
{
|
||||
local my_any1: any = add my_set[3];
|
||||
local my_any2: any = delete my_set[5];
|
||||
print my_any1, my_any2;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue