From: Clement Calmels Date: Mon, 18 Jan 2010 22:08:12 +0000 (+0100) Subject: free struct dirent **namelist X-Git-Tag: lxc-0.6.5~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8eec72f75d5a035a0c5d4d2ba882c5ae9cb44a72;p=thirdparty%2Flxc.git free struct dirent **namelist Correct the way the struct dirent **namelist structure is freed. Signed-off-by: Clement Calmels Signed-off-by: Daniel Lezcano --- diff --git a/src/lxc/parse.c b/src/lxc/parse.c index b3d1194eb..78dbd6d42 100644 --- a/src/lxc/parse.c +++ b/src/lxc/parse.c @@ -43,7 +43,7 @@ int lxc_dir_for_each(const char *name, const char *directory, lxc_dir_cb callback, void *data) { struct dirent **namelist; - int n; + int n, ret = 0; n = scandir(directory, &namelist, dir_filter, alphasort); if (n < 0) { @@ -52,15 +52,16 @@ int lxc_dir_for_each(const char *name, const char *directory, } while (n--) { - if (callback(name, directory, namelist[n]->d_name, data)) { + if (!ret && + callback(name, directory, namelist[n]->d_name, data)) { ERROR("callback failed"); - free(namelist[n]); - return -1; + ret = -1; } free(namelist[n]); } + free(namelist); - return 0; + return ret; } int lxc_file_for_each_line(const char *file, lxc_file_cb callback,