aboutsummaryrefslogtreecommitdiffstats
path: root/debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'debug.c')
-rw-r--r--debug.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/debug.c b/debug.c
index f36a3270..05083a48 100644
--- a/debug.c
+++ b/debug.c
@@ -1270,6 +1270,8 @@ do_set_var(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
arg = arg->next;
val = arg->a_node;
newval = dupnode(val);
+ // subs should not be freed, so
+ // use dupnode in call to assoc_set.
assoc_set(r, dupnode(subs), newval);
fprintf(out_fp, "%s[\"%.*s\"] = ", name, (int) subs->stlen, subs->stptr);
valinfo(newval, fprintf, out_fp);
@@ -1280,6 +1282,8 @@ do_set_var(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
array = make_array();
array->vname = estrdup(subs->stptr, subs->stlen);
array->parent_array = r;
+ // subs should not be freed, so
+ // use dupnode in call to assoc_set.
assoc_set(r, dupnode(subs), array);
r = array;
} else if (value->type != Node_var_array) {