notmuch: unref charset_filter to fix one memory leak
authorTomi Ollila <tomi.ollila@iki.fi>
Tue, 13 Dec 2011 18:18:48 +0000 (20:18 +0200)
committerDavid Bremner <bremner@debian.org>
Thu, 15 Dec 2011 11:38:06 +0000 (07:38 -0400)
In my test case added g_object_unref(charset_filter) reduces memory
consumption over 90% when 'notmuch show --format=text "*"' is
executed (~11000 messages, RES ~330M -> ~25M).

notmuch-show.c

index 873a7c4c15f97edf037ee3a3b0fff782713ded5d..8da3295e3cee204c7ac847928fbe477c1608b659 100644 (file)
@@ -471,9 +471,12 @@ show_text_part_content (GMimeObject *part, GMimeStream *stream_out)
        /* This result can be NULL for things like "unknown-8bit".
         * Don't set a NULL filter as that makes GMime print
         * annoying assertion-failure messages on stderr. */
-       if (charset_filter)
+       if (charset_filter) {
            g_mime_stream_filter_add (GMIME_STREAM_FILTER (stream_filter),
                                      charset_filter);
+           g_object_unref (charset_filter);
+       }
+
     }
 
     wrapper = g_mime_part_get_content_object (GMIME_PART (part));