* [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: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
* [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
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).