From c73d262642ee3a3d6585dc44acc62c432910f920 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 15 Jan 2019 21:27:06 +0200 Subject: Finish transition to using assoc_set. --- debug.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'debug.c') diff --git a/debug.c b/debug.c index f8aa6adf..f36a3270 100644 --- a/debug.c +++ b/debug.c @@ -1250,6 +1250,7 @@ do_set_var(CMDARG *arg, int cmd ATTRIBUTE_UNUSED) { NODE *subs, *value; int count = arg->a_count; + NODE *newval; assert(count > 0); name = arg->a_string; @@ -1268,11 +1269,10 @@ do_set_var(CMDARG *arg, int cmd ATTRIBUTE_UNUSED) else { arg = arg->next; val = arg->a_node; - lhs = assoc_lookup(r, subs); - unref(*lhs); - *lhs = dupnode(val); + newval = dupnode(val); + assoc_set(r, dupnode(subs), newval); fprintf(out_fp, "%s[\"%.*s\"] = ", name, (int) subs->stlen, subs->stptr); - valinfo(*lhs, fprintf, out_fp); + valinfo(newval, fprintf, out_fp); } } else { if (value == NULL) { @@ -1280,9 +1280,7 @@ do_set_var(CMDARG *arg, int cmd ATTRIBUTE_UNUSED) array = make_array(); array->vname = estrdup(subs->stptr, subs->stlen); array->parent_array = r; - lhs = assoc_lookup(r, subs); - unref(*lhs); - *lhs = array; + assoc_set(r, dupnode(subs), array); r = array; } else if (value->type != Node_var_array) { d_error(_("attempt to use scalar `%s[\"%.*s\"]' as array"), -- cgit v1.2.3 From 5766636f7bb7eb6d8fa9fd1b097ca74329062173 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Sun, 20 Jan 2019 21:42:36 +0200 Subject: Cleanups for assoc_set. --- debug.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'debug.c') 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) { -- cgit v1.2.3