aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2012-12-19 13:14:50 +0200
committerArnold D. Robbins <arnold@skeeve.com>2012-12-19 13:14:50 +0200
commitda6e4513c4b16249f4732c42c5329b39d398f0c9 (patch)
tree0bc992ca4ba8b9b6b0a5f4ca60a9a09c94c08e38
parent925f763a6f0240b39742ebf9239163a664cc9afc (diff)
parent886be6b488e3fa72f78979c3a2cd7d31a3bc6a85 (diff)
downloadegawk-da6e4513c4b16249f4732c42c5329b39d398f0c9.tar.gz
egawk-da6e4513c4b16249f4732c42c5329b39d398f0c9.tar.bz2
egawk-da6e4513c4b16249f4732c42c5329b39d398f0c9.zip
Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/gawk
-rw-r--r--ChangeLog6
-rw-r--r--gawkapi.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 73cf0229..ae49f560 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-12-18 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * gawkapi.c (sym_update_real): If setting a scalar variable that exists
+ already in an undefined state with type set to Node_var_new, we must
+ update the type to Node_var if the new value is not undefined.
+
2012-12-18 Arnold D. Robbins <arnold@skeeve.com>
* awkgram.y (tokentab): "extension" needs to be inside ifdef DYNAMIC.
diff --git a/gawkapi.c b/gawkapi.c
index b67275c1..cd09cddc 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -603,6 +603,9 @@ sym_update_real(awk_ext_id_t id,
&& (node->type == Node_var || node->type == Node_var_new)) {
unref(node->var_value);
node->var_value = awk_value_to_node(value);
+ if (node->type == Node_var_new && value->val_type != AWK_UNDEFINED)
+ node->type = Node_var;
+
/* let the extension change its own variable */
if (is_const)
node->var_assign = set_constant;