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.
This commit is contained in:
Ethan Glasser-Camp 2012-02-07 05:05:03 -05:00 committed by David Bremner
parent d8bff4b3af
commit 5f39979a4a

View file

@ -559,12 +559,14 @@ add_files_recursive (notmuch_database_t *notmuch,
DONE: DONE:
if (next) if (next)
talloc_free (next); talloc_free (next);
if (entry)
free (entry);
if (dir) if (dir)
closedir (dir); closedir (dir);
if (fs_entries) if (fs_entries) {
for (i = 0; i < num_fs_entries; i++)
free (fs_entries[i]);
free (fs_entries); free (fs_entries);
}
if (db_subdirs) if (db_subdirs)
notmuch_filenames_destroy (db_subdirs); notmuch_filenames_destroy (db_subdirs);
if (db_files) if (db_files)
@ -704,10 +706,12 @@ count_files (const char *path, int *count)
} }
DONE: DONE:
if (entry) if (fs_entries) {
free (entry); for (i = 0; i < num_fs_entries; i++)
if (fs_entries) free (fs_entries[i]);
free (fs_entries); free (fs_entries);
}
} }
static void static void