From: Paulo Zanoni <[email protected]> v2: move the free()s to the function that calls scandir
80 bytes in 1 blocks are definitely lost in loss record 411 of 631 at 0x4C2779D: malloc (vgpreload_memcheck-amd64-linux.so) by 0x4C27927: realloc (vgpreload_memcheck-amd64-linux.so) by 0x696A80D: scandir (scandir.c:108) by 0x4D8828: OpenConfigDir (scan.c:854) by 0x4D8A43: xf86openConfigDirFiles (scan.c:952) by 0x49031F: xf86HandleConfigFile (xf86Config.c:2327) by 0x49A9E3: InitOutput (xf86Init.c:365) by 0x425A7A: main (main.c:204) Signed-off-by: Paulo Zanoni <[email protected]> --- If we're going to move "free(list)" to outside the AddConfigDirFiles function, we must also move the "free(list[i])". IMHO, keeping these split as it was before is not a good idea. So either we keep this or v1. hw/xfree86/parser/scan.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/xfree86/parser/scan.c b/hw/xfree86/parser/scan.c index 668237b..78d57c4 100644 --- a/hw/xfree86/parser/scan.c +++ b/hw/xfree86/parser/scan.c @@ -798,14 +798,12 @@ AddConfigDirFiles(const char *dirpath, struct dirent **list, int num) "files opened\n"); warnOnce = TRUE; } - free(list[i]); continue; } path = malloc(PATH_MAX + 1); snprintf(path, PATH_MAX + 1, "%s/%s", dirpath, list[i]->d_name); - free(list[i]); file = fopen(path, "r"); if (!file) { free(path); @@ -856,8 +854,10 @@ OpenConfigDir(const char *path, const char *cmdline, const char *projroot, if (!found) { free(dirpath); dirpath = NULL; - free(list); } + while (num--) + free(list[num]); + free(list); } free(pathcopy); -- 1.7.7 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
