libite: Fix memory leak in dir()

Signed-off-by: Mattias Walström <lazzer@gmail.com>
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
Mattias Walström authored and Joachim Nilsson committed 2013-05-19 19:01:44 +02:00
1 parent ddf5ecc907
commit cd63f8a73d
1 file changed
+5 -4
+5 -4
View File
@@ -94,7 +94,7 @@ int dir(const char *dir, const char *type, int (*filter) (const char *file), cha
n = scandir(dir, &namelist, matcher, alphasort); n = scandir(dir, &namelist, matcher, alphasort);
if (n < 0) { if (n < 0) {
perror("scandir"); perror("scandir");
} else { } else if (n > 0) {
files = (char **)malloc(n * sizeof(char *)); files = (char **)malloc(n * sizeof(char *));
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
if (files) { if (files) {
@@ -109,11 +109,12 @@ int dir(const char *dir, const char *type, int (*filter) (const char *file), cha
} }
free(namelist[i]); free(namelist[i]);
} }
free(namelist); if (num)
*list = files;
} }
if (num) if (namelist)
*list = files; free(namelist);
return num; return num;
} }