From 750e3168705de678474fea0a551f9cf29e9e077d Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Sat, 28 Oct 2017 23:22:15 +0300 Subject: [PATCH] Small improvements in extension/rwarray.c. --- extension/ChangeLog | 5 +++++ extension/rwarray.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/extension/ChangeLog b/extension/ChangeLog index 4bfd896..c04e9c2 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,3 +1,8 @@ +2017-10-28 Arnold D. Robbins + + * rwarray.c (do_writea): Fix description in comment. + (write_array): Free the flattened array if writing an element fails. + 2017-10-19 Arnold D. Robbins * 4.2.0: Release tar ball made. diff --git a/extension/rwarray.c b/extension/rwarray.c index 2e82ca7..997b6b2 100644 --- a/extension/rwarray.c +++ b/extension/rwarray.c @@ -114,7 +114,7 @@ do_writea(int nargs, awk_value_t *result, struct awk_ext_func *unused) if (nargs < 2) goto out; - /* directory is first arg, array to dump is second */ + /* filename is first arg, array to dump is second */ if (! get_argument(0, AWK_STRING, & filename)) { fprintf(stderr, _("do_writea: argument 0 is not a string\n")); errno = EINVAL; @@ -178,8 +178,10 @@ write_array(FILE *fp, awk_array_t array) return awk_false; for (i = 0; i < flat_array->count; i++) { - if (! write_elem(fp, & flat_array->elements[i])) + if (! write_elem(fp, & flat_array->elements[i])) { + (void) release_flattened_array(array, flat_array); return awk_false; + } } if (! release_flattened_array(array, flat_array)) { -- 2.9.5