Re: [PATCH 2/4] parser: free scandir's list

2011-11-03 Thread Peter Hutterer
On Thu, Nov 03, 2011 at 09:51:58PM -0200, przan...@gmail.com wrote:
> From: Paulo Zanoni 
> 
> 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 
> ---
> 
> 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.
> 

that's what I had envisioned, thanks.

Reviewed-by: Peter Hutterer 

> 
>  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
> 
___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel


[PATCH 2/4] parser: free scandir's list

2011-11-03 Thread przanoni
From: Paulo Zanoni 

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 
---

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

___
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel