[PATCH v3] Release memory allocated by internet_address_list_parse_string()

Subject: [PATCH v3] Release memory allocated by internet_address_list_parse_string()

Date: Sat, 10 Dec 2011 12:18:54 +0200

To: notmuch@notmuchmail.org

Cc:

From: Tomi Ollila


g_object_unref() releases the memory of the InternetAddressList object
returned by internet_address_list_parse_string() -- when last (only)
reference is released, internet_address_list_finalize() will do cleanup.
---

hmm, have to agree amdragon's "suggested alternative" is more robust 
(in maintainability point of view) than the one I took previously.

The 3 other alternatives are not common in notmuch code and therefore dropped:
1) use multiple goto labels to jump in
2) use deeply nested if blocks
3) the ultimate solution: do { .. } while (0) blocks and break;s >;)

When reviewing, see also gmime-2.4.25/gmime/internet-address.c (or older)
I tested this patch by entering:  notmuch show --format=mbox '*' | wc

 notmuch-show.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/notmuch-show.c b/notmuch-show.c
index 603992a..873a7c4 100644
--- a/notmuch-show.c
+++ b/notmuch-show.c
@@ -255,7 +255,9 @@ _extract_email_address (const void *ctx, const char *from)
     email = talloc_strdup (ctx, email);
 
   DONE:
-    /* XXX: How to free addresses here? */
+    if (addresses)
+	g_object_unref (addresses);
+
     return email;
    }
 
-- 
1.7.7.3

Thread: