aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2015-04-14 15:02:27 +0300
committerArnold D. Robbins <arnold@skeeve.com>2015-04-14 15:02:27 +0300
commita830a63718f1e9a0a812e772bef6e891668afd17 (patch)
tree83c1c4f2a6f651d7bce02876230bd0d9f2e1af4e
parent3de71423b3a39be0b9536413321c953cbf99b119 (diff)
downloadegawk-a830a63718f1e9a0a812e772bef6e891668afd17.tar.gz
egawk-a830a63718f1e9a0a812e772bef6e891668afd17.tar.bz2
egawk-a830a63718f1e9a0a812e772bef6e891668afd17.zip
Make indirect call of gensub with 3 args work.
-rw-r--r--ChangeLog3
-rw-r--r--builtin.c4
-rw-r--r--test/ChangeLog5
-rw-r--r--test/indirectbuiltin.awk6
-rw-r--r--test/indirectbuiltin.ok1
5 files changed, 17 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f7b45d9f..2a99f374 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,9 @@
to an unsigned time_t. Thanks again to Glaudiston Gomes da Silva
<glaudistong@gmail.com>.
+ Unrelated:
+ * builtin.c (call_sub): Fix for indirect gensub, 3 args now works.
+
2015-04-13 Arnold D. Robbins <arnold@skeeve.com>
* regcomp.c (analyze): Prevent malloc(0).
diff --git a/builtin.c b/builtin.c
index a7853d7c..f650a9f8 100644
--- a/builtin.c
+++ b/builtin.c
@@ -3063,10 +3063,10 @@ call_sub(const char *name, int nargs)
PUSH(rhs);
nargs++;
}
- PUSH(rhs);
+ else
+ PUSH(rhs);
}
-
unref(zero);
result = do_sub(nargs, flags);
if (flags != GENSUB)
diff --git a/test/ChangeLog b/test/ChangeLog
index 0092932f..201f8a32 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-14 Arnold D. Robbins <arnold@skeeve.com>
+
+ * indirectbuiltin.awk: Add another test (gensub 3 args).
+ * indirectbuiltin.ok: Update good results.
+
2015-04-13 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (negtime): New test.
diff --git a/test/indirectbuiltin.awk b/test/indirectbuiltin.awk
index 4d5291d2..c9e75217 100644
--- a/test/indirectbuiltin.awk
+++ b/test/indirectbuiltin.awk
@@ -98,6 +98,12 @@ BEGIN {
i1 = @fun("f", "q", "g", "ff11bb")
print_result("string", fun, b1, i1)
+ fun = "gensub"
+ $0 = "ff11bb"
+ b1 = gensub("f", "q", "g")
+ i1 = @fun("f", "q", "g")
+ print_result("string", fun " (3 args)", b1, i1)
+
fun = "gsub"
$0 = "ff11bb"
b1 = gsub("f", "q")
diff --git a/test/indirectbuiltin.ok b/test/indirectbuiltin.ok
index 312bbd76..08c87610 100644
--- a/test/indirectbuiltin.ok
+++ b/test/indirectbuiltin.ok
@@ -14,6 +14,7 @@ math: sqrt: pass
math: srand: pass
math: xor: pass
string: gensub: pass
+string: gensub (3 args): pass
string: gsub: pass
string: index: pass
string: dcgettext: pass