diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2012-12-23 15:58:52 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2012-12-23 15:58:52 +0200 |
commit | cec0cbdbda6a8b27d3f69eb5e2984d87b55f78fb (patch) | |
tree | 61c7c85228cdd11a1df3294b381bebc24341689a /interpret.h | |
parent | ed17f7f9d71310c6418ba10a81bb35792f46cb08 (diff) | |
parent | b0648b574c42f1d56253938a46f5299c95eef702 (diff) | |
download | egawk-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.h | 8 |
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) |