aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Ethan Glasser-Camp <ethan@betacantrips.com>2012-02-07 05:05:03 -0500
committerGravatar David Bremner <bremner@debian.org>2012-02-14 23:44:30 -0400
commit5f39979a4aa2aea7d587201702fa3443248334bd (patch)
tree37841c9a67391cbc996bd89658ddd03a6fdecfa8
parentd8bff4b3af412cd56283e6e2cda256b79d2fd40b (diff)
Free the results of scandir()
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 separately.
-rw-r--r--notmuch-new.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/notmuch-new.c b/notmuch-new.c
index a569a544..8dbebb33 100644
--- a/notmuch-new.c
+++ b/notmuch-new.c
@@ -559,12 +559,14 @@ add_files_recursive (notmuch_database_t *notmuch,
DONE:
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)
@@ -704,10 +706,12 @@ count_files (const char *path, int *count)
}
DONE:
- if (entry)
- free (entry);
- if (fs_entries)
+ if (fs_entries) {
+ for (i = 0; i < num_fs_entries; i++)
+ free (fs_entries[i]);
+
free (fs_entries);
+ }
}
static void