awk: Fix handling of functions with empty body
ammend b79a0fef99
to properly
handle functions defined in another scope.
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
This commit is contained in:
parent
e418b2e7bb
commit
a060a1ad96
@ -2662,7 +2662,7 @@ static var *evaluate(node *op, var *res)
|
||||
const char *sv_progname;
|
||||
|
||||
/* The body might be empty, still has to eval the args */
|
||||
if (!op->r.n->info)
|
||||
if (!op->r.n->info && !op->r.f->body.first)
|
||||
syntax_error(EMSG_UNDEF_FUNC);
|
||||
|
||||
vbeg = v = nvalloc(op->r.f->nargs + 1);
|
||||
|
@ -44,6 +44,34 @@ testing "awk handles empty function f(arg){}" \
|
||||
"L1\n\nL2\n\n" \
|
||||
"" ""
|
||||
|
||||
prg='
|
||||
function outer_fun() {
|
||||
return 1
|
||||
}
|
||||
END {
|
||||
i=1
|
||||
print "L" i "\n"
|
||||
i += outer_fun()
|
||||
print "L" i "\n"
|
||||
}'
|
||||
testing "awk properly handles function from other scope" \
|
||||
"awk '$prg'" \
|
||||
"L1\n\nL2\n\n" \
|
||||
"" ""
|
||||
|
||||
prg='
|
||||
END {
|
||||
i=1
|
||||
print "L" i "\n"
|
||||
i + trigger_error_fun()
|
||||
print "L" i "\n"
|
||||
}'
|
||||
testing "awk properly handles undefined function" \
|
||||
"awk '$prg' 2>&1" \
|
||||
"L1\n\nawk: cmd. line:5: Call to undefined function\n" \
|
||||
"" ""
|
||||
|
||||
|
||||
optional DESKTOP
|
||||
testing "awk hex const 1" "awk '{ print or(0xffffffff,1) }'" "4294967295\n" "" "\n"
|
||||
testing "awk hex const 2" "awk '{ print or(0x80000000,1) }'" "2147483649\n" "" "\n"
|
||||
|
Loading…
Reference in New Issue
Block a user