aboutsummaryrefslogtreecommitdiffstats
path: root/ext.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2012-12-25 22:40:49 +0200
committerArnold D. Robbins <arnold@skeeve.com>2012-12-25 22:40:49 +0200
commit566df675d8a6bb0c632231abe2e7573ce9f9541d (patch)
tree8098666e8721daf4c7c3620f6046b94208b94f8a /ext.c
parent11d4249864512d100a938559e044876f2fd3171f (diff)
parente427f97daa5f252709f5380701f306e031585dde (diff)
downloadegawk-566df675d8a6bb0c632231abe2e7573ce9f9541d.tar.gz
egawk-566df675d8a6bb0c632231abe2e7573ce9f9541d.tar.bz2
egawk-566df675d8a6bb0c632231abe2e7573ce9f9541d.zip
Merge branch 'gawk-4.0-stable'.
Diffstat (limited to 'ext.c')
-rw-r--r--ext.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/ext.c b/ext.c
index ff0beb9a..98b73815 100644
--- a/ext.c
+++ b/ext.c
@@ -335,8 +335,15 @@ get_argument(int i)
if (t->type == Node_param_list)
t = GET_PARAM(t->param_cnt);
- if (t->type == Node_array_ref)
- t = t->orig_array;
+ if (t->type == Node_array_ref) {
+ if (t->orig_array->type == Node_var) {
+ /* already a scalar, can no longer use it as array */
+ t->type = Node_var;
+ t->var_value = Nnull_string;
+ return t;
+ }
+ return t->orig_array; /* Node_var_new or Node_var_array */
+ }
if (t->type == Node_var) /* See Case Node_var in setup_frame(), eval.c */
return Nnull_string;
/* Node_var_new, Node_var_array or Node_val */