From a060a1ad9655dede51f842873672652bf78a3e8e Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 31 Jul 2013 15:29:20 +0200 Subject: awk: Fix handling of functions with empty body ammend b79a0fef99627c457548e804fcd6e162b116cbe8 to properly handle functions defined in another scope. Signed-off-by: Bernhard Reutner-Fischer --- editors/awk.c | 2 +- testsuite/awk.tests | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/editors/awk.c b/editors/awk.c index a2e2021..77784df 100644 --- a/editors/awk.c +++ b/editors/awk.c @@ -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); diff --git a/testsuite/awk.tests b/testsuite/awk.tests index 160f460..6af6072 100755 --- a/testsuite/awk.tests +++ b/testsuite/awk.tests @@ -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" -- cgit v1.1