Blob Blame History Raw
From e777d620374a5d3664064f535001ea5d57fcf639 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Sat, 20 Apr 2013 14:25:29 +0200
Subject: [PATCH] patch: tag-popup-crash

Squashed commit of the following:

commit fd4fc76e2114b8ab9341232912c2d19b6160ccd6
Author: Nils Philippsen <nils@redhat.com>
Date:   Tue Apr 16 11:16:41 2013 +0200

    app: let the tag popup own its tag objects

    This should fix crashes in which tag objects got accessed after they
    were disposed, because they still were stored with the popup object.
    (cherry picked from commit b109e0580650b4b49b6f00b15fec4bcd330fb045)
---
 app/widgets/gimptagpopup.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/app/widgets/gimptagpopup.c b/app/widgets/gimptagpopup.c
index f822ab2..fd913c2 100644
--- a/app/widgets/gimptagpopup.c
+++ b/app/widgets/gimptagpopup.c
@@ -257,6 +257,8 @@ gimp_tag_popup_constructed (GObject *object)
       tag_data->tag   = tag_iterator->data;
       tag_data->state = GTK_STATE_NORMAL;
 
+      g_object_ref (tag_data->tag);
+
       for (j = 0; j < current_count; j++)
         {
           if (! gimp_tag_compare_with_string (tag_data->tag, current_tags[j]))
@@ -386,6 +388,13 @@ gimp_tag_popup_dispose (GObject *object)
 
   if (popup->tag_data)
     {
+      gint i;
+
+      for (i = 0; i < popup->tag_count; i++)
+        {
+          g_object_unref (popup->tag_data[i].tag);
+        }
+
       g_free (popup->tag_data);
       popup->tag_data = NULL;
     }
-- 
1.8.1.4