[PATCH] Free the results of scandir()

Ethan Glasser-Camp glasse at cs.rpi.edu
Mon Feb 6 14:02:49 PST 2012

From: Ethan Glasser-Camp <ethan at betacantrips.com>

scandir() returns "strings allocated via malloc(3)" which are then
"collected in array namelist which is allocated via
malloc(3)". Currently we just free the array namelist. Instead, free
all the entries of namelist, and then free namelist.

entry only points to elements of namelist, so we don't free it

This should fix a minor memory leak in notmuch-new. Please confirm I'm
reading the manpage correctly ;)

 notmuch-new.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/notmuch-new.c b/notmuch-new.c
index a569a54..c536873 100644
--- a/notmuch-new.c
+++ b/notmuch-new.c
@@ -559,12 +559,14 @@ add_files_recursive (notmuch_database_t *notmuch,
     if (next)
 	talloc_free (next);
-    if (entry)
-	free (entry);
     if (dir)
 	closedir (dir);
-    if (fs_entries)
+    if (fs_entries){
+	for (i = 0; i < num_fs_entries; i++){
+	    free (fs_entries[i]);
+	}
 	free (fs_entries);
+    }
     if (db_subdirs)
 	notmuch_filenames_destroy (db_subdirs);
     if (db_files)

More information about the notmuch mailing list