aboutsummaryrefslogtreecommitdiffstats
path: root/field.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2020-06-14 11:18:15 +0300
committerArnold D. Robbins <arnold@skeeve.com>2020-06-14 11:18:15 +0300
commit8b1a5b7dbf993908f24c1a0a1ddebbf2b96c70dd (patch)
tree11e82319a978fb134df2c42d48ae36927cfba98c /field.c
parent2911138b7d7901a2f6dcd2d99879f055dec5e3f7 (diff)
downloadegawk-8b1a5b7dbf993908f24c1a0a1ddebbf2b96c70dd.tar.gz
egawk-8b1a5b7dbf993908f24c1a0a1ddebbf2b96c70dd.tar.bz2
egawk-8b1a5b7dbf993908f24c1a0a1ddebbf2b96c70dd.zip
Check for FUNCTAB and SYMTAB as destination in builtin functions.
Diffstat (limited to 'field.c')
-rw-r--r--field.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/field.c b/field.c
index 45ab9f5f..0e84447a 100644
--- a/field.c
+++ b/field.c
@@ -980,6 +980,8 @@ do_split(int nargs)
sep_arr = POP_PARAM();
if (sep_arr->type != Node_var_array)
fatal(_("split: fourth argument is not an array"));
+ check_symtab_functab(sep_arr, "split",
+ _("%s: cannot use %s as fourth argument"));
if ((do_lint_extensions || do_lint_old) && ! warned) {
warned = true;
lintwarn(_("split: fourth argument is a gawk extension"));
@@ -990,6 +992,8 @@ do_split(int nargs)
arr = POP_PARAM();
if (arr->type != Node_var_array)
fatal(_("split: second argument is not an array"));
+ check_symtab_functab(arr, "split",
+ _("%s: cannot use %s as second argument"));
if (sep_arr != NULL) {
if (sep_arr == arr)
@@ -1073,11 +1077,15 @@ do_patsplit(int nargs)
sep_arr = POP_PARAM();
if (sep_arr->type != Node_var_array)
fatal(_("patsplit: fourth argument is not an array"));
+ check_symtab_functab(sep_arr, "patsplit",
+ _("%s: cannot use %s as fourth argument"));
}
sep = POP();
arr = POP_PARAM();
if (arr->type != Node_var_array)
fatal(_("patsplit: second argument is not an array"));
+ check_symtab_functab(arr, "patsplit",
+ _("%s: cannot use %s as second argument"));
src = TOP_STRING();