aboutsummaryrefslogtreecommitdiffstats
path: root/gawkapi.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2012-06-24 21:07:22 +0300
committerArnold D. Robbins <arnold@skeeve.com>2012-06-24 21:07:22 +0300
commit37cd3566b9b74c43d5f11f1cba8dec147a25e474 (patch)
tree86bc4f722b6fd17c5dcf183f1a82ca20e2786454 /gawkapi.c
parent115d332143b1a9d23bbf57088a577e778dcf31f8 (diff)
downloadegawk-37cd3566b9b74c43d5f11f1cba8dec147a25e474.tar.gz
egawk-37cd3566b9b74c43d5f11f1cba8dec147a25e474.tar.bz2
egawk-37cd3566b9b74c43d5f11f1cba8dec147a25e474.zip
Get rwarray extension working with new API.
Diffstat (limited to 'gawkapi.c')
-rw-r--r--gawkapi.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gawkapi.c b/gawkapi.c
index 139d77b8..f87c7759 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -528,6 +528,7 @@ api_set_array_element(awk_ext_id_t id, awk_array_t a_cookie,
{
NODE *array = (NODE *)a_cookie;
NODE *tmp;
+ NODE *elem;
NODE **aptr;
/* don't check for index len zero, null str is ok as index */
@@ -542,9 +543,13 @@ api_set_array_element(awk_ext_id_t id, awk_array_t a_cookie,
aptr = assoc_lookup(array, tmp);
unref(tmp);
unref(*aptr);
- *aptr = awk_value_to_node(& element->value);
- if ((*aptr)->type == Node_var_array)
- (*aptr)->parent_array = array;
+ elem = *aptr = awk_value_to_node(& element->value);
+ if (elem->type == Node_var_array) {
+ elem->parent_array = array;
+ elem->vname = estrdup(element->index.str_value.str,
+ element->index.str_value.len);
+ make_aname(elem);
+ }
return true;
}