diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2012-06-19 20:54:19 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2012-06-19 20:54:19 +0300 |
commit | fd3c1195711270a001d860770098b8c0d9118c10 (patch) | |
tree | c5e0539da1f8f826b3f17839e6186d800b8f13c7 /gawkapi.c | |
parent | 3a40be8a79f9d4e4bb205cca4eb15b1ee811f60c (diff) | |
download | egawk-fd3c1195711270a001d860770098b8c0d9118c10.tar.gz egawk-fd3c1195711270a001d860770098b8c0d9118c10.tar.bz2 egawk-fd3c1195711270a001d860770098b8c0d9118c10.zip |
Delete marked elements from flattened array.
Diffstat (limited to 'gawkapi.c')
-rw-r--r-- | gawkapi.c | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -637,15 +637,24 @@ api_release_flattened_array(awk_ext_id_t id, list = (NODE **) data->opaque2; - /* FIXME: Delete items flagged for delete. */ + /* Delete items flagged for delete. */ + for (i = 0; i < data->count; i++) { + if ((data->elements[i].flags & AWK_ELEMENT_DELETE) != 0) { + /* let the other guy do the work */ + (void) api_del_array_element(id, a_cookie, + & data->elements[i].index); + } + } /* free index nodes */ - for (i = 0; i < 2 * array->table_size; i += 2) + for (i = 0; i < 2 * array->table_size; i += 2) { unref(list[i]); + } efree(list); + efree(data); - return true; /* for now */ + return true; } gawk_api_t api_impl = { |