_notmuch_message_index_file: unref (free) address lists from gmime.
authorDavid Bremner <bremner@debian.org>
Tue, 11 Dec 2012 03:33:40 +0000 (23:33 -0400)
committerDavid Bremner <bremner@debian.org>
Mon, 24 Dec 2012 23:02:22 +0000 (19:02 -0400)
Apparently as of GMime 2.4, you don't need to call
internet_address_list_destroy anymore, but you still need to call
g_object_unref (from the GMime Changelog).

On the medium performance corpus, valgrind shows "possibly lost"
leakage in "notmuch new" dropping from 7M to 300k.

lib/index.cc

index da0e6cebd7c327ee3fdb35ffdf15110f89ce2fc0..a2edd6d9b6c0795fbdb2512907265000bb54fe21 100644 (file)
@@ -484,12 +484,18 @@ mboxes is deprecated and may be removed in the future.\n", filename);
     }
 
     from = g_mime_message_get_sender (mime_message);
-    addresses = internet_address_list_parse_string (from);
 
-    _index_address_list (message, "from", addresses);
+    addresses = internet_address_list_parse_string (from);
+    if (addresses) {
+       _index_address_list (message, "from", addresses);
+       g_object_unref (addresses);
+    }
 
     addresses = g_mime_message_get_all_recipients (mime_message);
-    _index_address_list (message, "to", addresses);
+    if (addresses) {
+       _index_address_list (message, "to", addresses);
+       g_object_unref (addresses);
+    }
 
     subject = g_mime_message_get_subject (mime_message);
     _notmuch_message_gen_terms (message, "subject", subject);