[PATCH] Free the results of scandir()

classic Classic list List threaded Threaded
5 messages Options
Ethan Glasser-Camp Ethan Glasser-Camp
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

[PATCH] Free the results of scandir()

From: Ethan Glasser-Camp <[hidden email]>

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

v3: I'm still learning the house style. Thanks Dmitry.

 notmuch-new.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/notmuch-new.c b/notmuch-new.c
index a569a54..8dbebb3 100644
--- a/notmuch-new.c
+++ b/notmuch-new.c
@@ -559,12 +559,14 @@ add_files_recursive (notmuch_database_t *notmuch,
   DONE:
     if (next)
  talloc_free (next);
-    if (entry)
- free (entry);
     if (dir)
  closedir (dir);
-    if (fs_entries)
+    if (fs_entries) {
+ for (i = 0; i < num_fs_entries; i++)
+    free (fs_entries[i]);
+
  free (fs_entries);
+    }
     if (db_subdirs)
  notmuch_filenames_destroy (db_subdirs);
     if (db_files)
@@ -704,10 +706,12 @@ count_files (const char *path, int *count)
     }
 
   DONE:
-    if (entry)
- free (entry);
-    if (fs_entries)
+    if (fs_entries) {
+ for (i = 0; i < num_fs_entries; i++)
+    free (fs_entries[i]);
+
         free (fs_entries);
+    }
 }
 
 static void
--
1.7.5.4

_______________________________________________
notmuch mailing list
[hidden email]
http://notmuchmail.org/mailman/listinfo/notmuch
Dmitry Kurochkin Dmitry Kurochkin
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [PATCH] Free the results of scandir()

On Tue,  7 Feb 2012 05:05:03 -0500, Ethan Glasser-Camp <[hidden email]> wrote:

> From: Ethan Glasser-Camp <[hidden email]>
>
> 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.
> ---
>
> v3: I'm still learning the house style. Thanks Dmitry.
>

Looks good.

Please use --subject-prefix='PATCH vN' parameter when sending new
versions of patches.  Also, sending new versions as replies to the first
email in the original thread makes it easier to track.

Regards,
  Dmitry

>  notmuch-new.c |   16 ++++++++++------
>  1 files changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/notmuch-new.c b/notmuch-new.c
> index a569a54..8dbebb3 100644
> --- a/notmuch-new.c
> +++ b/notmuch-new.c
> @@ -559,12 +559,14 @@ add_files_recursive (notmuch_database_t *notmuch,
>    DONE:
>      if (next)
>   talloc_free (next);
> -    if (entry)
> - free (entry);
>      if (dir)
>   closedir (dir);
> -    if (fs_entries)
> +    if (fs_entries) {
> + for (i = 0; i < num_fs_entries; i++)
> +    free (fs_entries[i]);
> +
>   free (fs_entries);
> +    }
>      if (db_subdirs)
>   notmuch_filenames_destroy (db_subdirs);
>      if (db_files)
> @@ -704,10 +706,12 @@ count_files (const char *path, int *count)
>      }
>  
>    DONE:
> -    if (entry)
> - free (entry);
> -    if (fs_entries)
> +    if (fs_entries) {
> + for (i = 0; i < num_fs_entries; i++)
> +    free (fs_entries[i]);
> +
>          free (fs_entries);
> +    }
>  }
>  
>  static void
> --
> 1.7.5.4
>
> _______________________________________________
> notmuch mailing list
> [hidden email]
> http://notmuchmail.org/mailman/listinfo/notmuch
_______________________________________________
notmuch mailing list
[hidden email]
http://notmuchmail.org/mailman/listinfo/notmuch
Ethan Glasser-Camp Ethan Glasser-Camp
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [PATCH] Free the results of scandir()

On 02/07/2012 05:10 AM, Dmitry Kurochkin wrote:
> Please use --subject-prefix='PATCH vN' parameter when sending new
> versions of patches.  Also, sending new versions as replies to the first
> email in the original thread makes it easier to track.

Oops! Thanks again.

Ethan

_______________________________________________
notmuch mailing list
[hidden email]
http://notmuchmail.org/mailman/listinfo/notmuch
Tomi Ollila-2 Tomi Ollila-2
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [PATCH] Free the results of scandir()

In reply to this post by Ethan Glasser-Camp
On Tue,  7 Feb 2012 05:05:03 -0500, Ethan Glasser-Camp <[hidden email]> wrote:

> From: Ethan Glasser-Camp <[hidden email]>
>
> 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.
> ---
+1

Tomi

_______________________________________________
notmuch mailing list
[hidden email]
http://notmuchmail.org/mailman/listinfo/notmuch

attachment0 (194 bytes) Download Attachment
David Bremner-2 David Bremner-2
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: [PATCH] Free the results of scandir()

In reply to this post by Ethan Glasser-Camp
On Tue,  7 Feb 2012 05:05:03 -0500, Ethan Glasser-Camp <[hidden email]> wrote:
> From: Ethan Glasser-Camp <[hidden email]>
>
> 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.

pushed, thanks

d
_______________________________________________
notmuch mailing list
[hidden email]
http://notmuchmail.org/mailman/listinfo/notmuch
Loading...