diff options
Diffstat (limited to 'patches/02_awk-fix-handling-of-functions-with-empty-body.patch')
-rw-r--r-- | patches/02_awk-fix-handling-of-functions-with-empty-body.patch | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/patches/02_awk-fix-handling-of-functions-with-empty-body.patch b/patches/02_awk-fix-handling-of-functions-with-empty-body.patch deleted file mode 100644 index 102e128..0000000 --- a/patches/02_awk-fix-handling-of-functions-with-empty-body.patch +++ /dev/null @@ -1,88 +0,0 @@ -From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> -Date: Wed, 06 Mar 2013 20:01:05 +0000 -Date: Wed, 31 Jul 2013 13:29:20 +0000 -Origin: upstream, http://git.busybox.net/busybox/commit/?id=b79a0fef -Origin: upstream, http://git.busybox.net/busybox/commit/?id=a060a1ad -Subject: awk: Fix handling of functions with empty body - -This fixes the following error that occurs when building an unpatched GCC 4.7 -with BusyBox awk: - - awk: [...]/gcc/config/i386/i386-builtin-types.awk:164: Call to undefined function - -BusyBox awk throws this syntax error if the called function has no nodes in its -node chain (i.e. the function body is empty). - ---- -diff --git a/editors/awk.c b/editors/awk.c -index 3224788..77784df 100644 ---- a/editors/awk.c -+++ b/editors/awk.c -@@ -2661,7 +2661,8 @@ static var *evaluate(node *op, var *res) - var *vbeg, *v; - const char *sv_progname; - -- if (!op->r.f->body.first) -+ /* The body might be empty, still has to eval the args */ -+ 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 f9c3b6b..6af6072 100755 ---- a/testsuite/awk.tests -+++ b/testsuite/awk.tests -@@ -25,6 +25,53 @@ testing "awk if string == " "awk 'BEGIN{if(\"a\"==\"ab\") print \"bar\"}'" "" - - # 4294967295 = 0xffffffff - testing "awk bitwise op" "awk '{ print or(4294967295,1) }'" "4.29497e+09\n" "" "\n" -+ -+# we were testing for a non-empty body when deciding if a function was -+# defined or not. The testcase below caused: -+# awk: cmd. line:8: Call to undefined function -+prg=' -+function empty_fun(count) { -+ # empty -+} -+END { -+ i=1 -+ print "L" i "\n" -+ empty_fun(i + i + ++i) -+ print "L" i "\n" -+}' -+testing "awk handles empty function f(arg){}" \ -+ "awk '$prg'" \ -+ "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) }'" "4.29497e+09\n" "" "\n" - testing "awk hex const 2" "awk '{ print or(0x80000000,1) }'" "2.14748e+09\n" "" "\n" |