aboutsummaryrefslogtreecommitdiffstats
path: root/interpret.h
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2012-12-23 15:58:52 +0200
committerArnold D. Robbins <arnold@skeeve.com>2012-12-23 15:58:52 +0200
commitcec0cbdbda6a8b27d3f69eb5e2984d87b55f78fb (patch)
tree61c7c85228cdd11a1df3294b381bebc24341689a /interpret.h
parented17f7f9d71310c6418ba10a81bb35792f46cb08 (diff)
parentb0648b574c42f1d56253938a46f5299c95eef702 (diff)
downloadegawk-cec0cbdbda6a8b27d3f69eb5e2984d87b55f78fb.tar.gz
egawk-cec0cbdbda6a8b27d3f69eb5e2984d87b55f78fb.tar.bz2
egawk-cec0cbdbda6a8b27d3f69eb5e2984d87b55f78fb.zip
Merge branch 'gawk-4.0-stable'
Diffstat (limited to 'interpret.h')
-rw-r--r--interpret.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/interpret.h b/interpret.h
index c652624a..8e0fdee0 100644
--- a/interpret.h
+++ b/interpret.h
@@ -140,8 +140,13 @@ top:
if (m->type == Node_param_list) {
isparam = true;
save_symbol = m = GET_PARAM(m->param_cnt);
- if (m->type == Node_array_ref)
+ if (m->type == Node_array_ref) {
+ if (m->orig_array->type == Node_var) {
+ /* gawk 'func f(x) { a = 10; print x; } BEGIN{ f(a) }' */
+ goto uninitialized_scalar;
+ }
m = m->orig_array;
+ }
}
switch (m->type) {
@@ -157,6 +162,7 @@ top:
break;
case Node_var_new:
+uninitialized_scalar:
m->type = Node_var;
m->var_value = dupnode(Nnull_string);
if (do_lint)