unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH] Free the results of scandir()
@ 2012-02-06 22:02 Ethan Glasser-Camp
  2012-02-06 22:21 ` Jani Nikula
  0 siblings, 1 reply; 7+ messages in thread
From: Ethan Glasser-Camp @ 2012-02-06 22:02 UTC (permalink / raw)
  To: notmuch; +Cc: Ethan Glasser-Camp

From: Ethan Glasser-Camp <ethan@betacantrips.com>

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

This should fix a minor memory leak in notmuch-new. Please confirm I'm
reading the manpage correctly ;)

 notmuch-new.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/notmuch-new.c b/notmuch-new.c
index a569a54..c536873 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)
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] Free the results of scandir()
  2012-02-06 22:02 Ethan Glasser-Camp
@ 2012-02-06 22:21 ` Jani Nikula
  0 siblings, 0 replies; 7+ messages in thread
From: Jani Nikula @ 2012-02-06 22:21 UTC (permalink / raw)
  To: Ethan Glasser-Camp, notmuch; +Cc: Ethan Glasser-Camp

On Mon,  6 Feb 2012 17:02:49 -0500, Ethan Glasser-Camp <glasse@cs.rpi.edu> wrote:
> From: Ethan Glasser-Camp <ethan@betacantrips.com>
> 
> 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.
> ---
> 
> This should fix a minor memory leak in notmuch-new. Please confirm I'm
> reading the manpage correctly ;)

It looks right, good catch! Please do also fix the other scandir() usage
in count_files().

BR,
Jani.


> 
>  notmuch-new.c |    8 +++++---
>  1 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/notmuch-new.c b/notmuch-new.c
> index a569a54..c536873 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)
> -- 
> 1.7.5.4
> 
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] Free the results of scandir()
@ 2012-02-07 10:05 Ethan Glasser-Camp
  2012-02-07 10:10 ` Dmitry Kurochkin
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Ethan Glasser-Camp @ 2012-02-07 10:05 UTC (permalink / raw)
  To: notmuch; +Cc: Ethan Glasser-Camp

From: Ethan Glasser-Camp <ethan@betacantrips.com>

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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] Free the results of scandir()
  2012-02-07 10:05 [PATCH] Free the results of scandir() Ethan Glasser-Camp
@ 2012-02-07 10:10 ` Dmitry Kurochkin
  2012-02-07 10:13   ` Ethan Glasser-Camp
  2012-02-07 10:30 ` Tomi Ollila
  2012-02-15  3:47 ` David Bremner
  2 siblings, 1 reply; 7+ messages in thread
From: Dmitry Kurochkin @ 2012-02-07 10:10 UTC (permalink / raw)
  To: Ethan Glasser-Camp, notmuch; +Cc: Ethan Glasser-Camp

On Tue,  7 Feb 2012 05:05:03 -0500, Ethan Glasser-Camp <glasse@cs.rpi.edu> wrote:
> From: Ethan Glasser-Camp <ethan@betacantrips.com>
> 
> 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
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Free the results of scandir()
  2012-02-07 10:10 ` Dmitry Kurochkin
@ 2012-02-07 10:13   ` Ethan Glasser-Camp
  0 siblings, 0 replies; 7+ messages in thread
From: Ethan Glasser-Camp @ 2012-02-07 10:13 UTC (permalink / raw)
  To: Dmitry Kurochkin; +Cc: notmuch, Ethan Glasser-Camp

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Free the results of scandir()
  2012-02-07 10:05 [PATCH] Free the results of scandir() Ethan Glasser-Camp
  2012-02-07 10:10 ` Dmitry Kurochkin
@ 2012-02-07 10:30 ` Tomi Ollila
  2012-02-15  3:47 ` David Bremner
  2 siblings, 0 replies; 7+ messages in thread
From: Tomi Ollila @ 2012-02-07 10:30 UTC (permalink / raw)
  To: Ethan Glasser-Camp, notmuch; +Cc: Ethan Glasser-Camp

[-- Attachment #1: Type: text/plain, Size: 499 bytes --]

On Tue,  7 Feb 2012 05:05:03 -0500, Ethan Glasser-Camp <glasse@cs.rpi.edu> wrote:
> From: Ethan Glasser-Camp <ethan@betacantrips.com>
> 
> 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

[-- Attachment #2: Type: application/pgp-signature, Size: 188 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Free the results of scandir()
  2012-02-07 10:05 [PATCH] Free the results of scandir() Ethan Glasser-Camp
  2012-02-07 10:10 ` Dmitry Kurochkin
  2012-02-07 10:30 ` Tomi Ollila
@ 2012-02-15  3:47 ` David Bremner
  2 siblings, 0 replies; 7+ messages in thread
From: David Bremner @ 2012-02-15  3:47 UTC (permalink / raw)
  To: Ethan Glasser-Camp, notmuch; +Cc: Ethan Glasser-Camp

On Tue,  7 Feb 2012 05:05:03 -0500, Ethan Glasser-Camp <glasse@cs.rpi.edu> wrote:
> From: Ethan Glasser-Camp <ethan@betacantrips.com>
> 
> 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

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-02-15  3:48 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-07 10:05 [PATCH] Free the results of scandir() Ethan Glasser-Camp
2012-02-07 10:10 ` Dmitry Kurochkin
2012-02-07 10:13   ` Ethan Glasser-Camp
2012-02-07 10:30 ` Tomi Ollila
2012-02-15  3:47 ` David Bremner
  -- strict thread matches above, loose matches on Subject: below --
2012-02-06 22:02 Ethan Glasser-Camp
2012-02-06 22:21 ` Jani Nikula

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).