aboutsummaryrefslogtreecommitdiffstats
path: root/extension/gawkfts.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2020-06-10 06:10:04 +0300
committerArnold D. Robbins <arnold@skeeve.com>2020-06-10 17:48:50 +0300
commit17d03a4deb7ed18abb4e0e590e6315050d9c29fd (patch)
tree324feeb1e3568042fe9e2f73ebd6d63296781cf7 /extension/gawkfts.c
parent5aae00200fc44bdfefbb497cf57eb23a9d2517be (diff)
downloadegawk-17d03a4deb7ed18abb4e0e590e6315050d9c29fd.tar.gz
egawk-17d03a4deb7ed18abb4e0e590e6315050d9c29fd.tar.bz2
egawk-17d03a4deb7ed18abb4e0e590e6315050d9c29fd.zip
Add mbuilov fixes. Still needs review.
Diffstat (limited to 'extension/gawkfts.c')
-rw-r--r--extension/gawkfts.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/extension/gawkfts.c b/extension/gawkfts.c
index c7fbc17d..2e7ab688 100644
--- a/extension/gawkfts.c
+++ b/extension/gawkfts.c
@@ -228,7 +228,7 @@ fts_open(char * const *argv, int options,
* so that everything about the "current" node is ignored.
*/
if ((sp->fts_cur = fts_alloc(sp, "", 0)) == NULL)
- goto mem3;
+ goto mem4;
sp->fts_cur->fts_link = root;
sp->fts_cur->fts_info = FTS_INIT;
@@ -252,6 +252,8 @@ fts_open(char * const *argv, int options,
return (sp);
+mem4: if (sp->fts_array != NULL)
+ free(sp->fts_array);
mem3: fts_lfree(root);
fts_free(parent);
mem2: free(sp->fts_path);
@@ -916,6 +918,7 @@ mem1: saved_errno = errno;
(cur->fts_level == FTS_ROOTLEVEL ?
FCHDIR(sp, sp->fts_rfd) :
fts_safe_changedir(sp, cur->fts_parent, -1, ".."))) {
+ fts_lfree(head);
cur->fts_info = FTS_ERR;
SET(FTS_STOP);
return (NULL);