aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-05-25 23:08:56 +0200
committerTed Gould <ted@canonical.com>2009-05-25 23:08:56 +0200
commit0b46d2d1e1acbe32b5468565731a6e5a08c9282b (patch)
tree4edee66a391edd634c3de87224b2447971a80fe2
parent4614822dddd73d5ab16f7f97555f99e8b5460d4c (diff)
downloadlibdbusmenu-0b46d2d1e1acbe32b5468565731a6e5a08c9282b.tar.gz
libdbusmenu-0b46d2d1e1acbe32b5468565731a6e5a08c9282b.tar.bz2
libdbusmenu-0b46d2d1e1acbe32b5468565731a6e5a08c9282b.zip
Unref'ing the children if we're being killed ourselves
-rw-r--r--libdbusmenu-glib/menuitem.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index 9506cad..91429d6 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -185,6 +185,14 @@ dbusmenu_menuitem_init (DbusmenuMenuitem *self)
static void
dbusmenu_menuitem_dispose (GObject *object)
{
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(object);
+
+ GList * child = NULL;
+ for (child = priv->children; child != NULL; child = g_list_next(child)) {
+ g_object_unref(G_OBJECT(child->data));
+ }
+ g_list_free(priv->children);
+ priv->children = NULL;
G_OBJECT_CLASS (dbusmenu_menuitem_parent_class)->dispose (object);
return;
@@ -193,6 +201,7 @@ dbusmenu_menuitem_dispose (GObject *object)
static void
dbusmenu_menuitem_finalize (GObject *object)
{
+ g_debug("Menuitem dying");
DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(object);
if (priv->properties != NULL) {