aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2011-01-26 10:18:38 -0600
committerTed Gould <ted@gould.cx>2011-01-26 10:18:38 -0600
commit084ae8aac061e9a26c017bd0fbe0cf96b192450f (patch)
tree905bb421fa6e94233760ea9398a09e93f67c95f1
parent59f267bfd9cbb6f9e6b7b5317c37346991f53190 (diff)
parent59b8be494e5fbccdbed59b49fa4f190fbbb55343 (diff)
downloadlibdbusmenu-084ae8aac061e9a26c017bd0fbe0cf96b192450f.tar.gz
libdbusmenu-084ae8aac061e9a26c017bd0fbe0cf96b192450f.tar.bz2
libdbusmenu-084ae8aac061e9a26c017bd0fbe0cf96b192450f.zip
* Upstream Merge
* Fixing some memory leaks
-rw-r--r--debian/changelog7
-rw-r--r--libdbusmenu-glib/client.c5
-rw-r--r--libdbusmenu-glib/menuitem.c10
3 files changed, 19 insertions, 3 deletions
diff --git a/debian/changelog b/debian/changelog
index 5f543d6..44d6e57 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+libdbusmenu (0.3.93-0ubuntu2~ted5) UNRELEASED; urgency=low
+
+ * Upstream Merge
+ * Fixing some memory leaks
+
+ -- Ted Gould <ted@ubuntu.com> Wed, 26 Jan 2011 10:18:17 -0600
+
libdbusmenu (0.3.93-0ubuntu2~ted4) natty; urgency=low
* Upstream Merge
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index a25ad79..b196c9f 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -527,6 +527,7 @@ get_properties_callback (GObject *obj, GAsyncResult * res, gpointer user_data)
listener->callback(NULL, error, listener->user_data);
}
g_array_free(listeners, TRUE);
+ g_error_free(error);
return;
}
@@ -1150,7 +1151,6 @@ menuitem_get_properties_new_cb (GVariant * properties, GError * error, gpointer
if (error != NULL) {
g_warning("Error getting properties on a new menuitem: %s", error->message);
g_object_unref(propdata->item);
- g_free(data);
return;
}
@@ -1287,6 +1287,8 @@ about_to_show_cb (GObject * proxy, GAsyncResult * res, gpointer userdata)
g_warning("Unable to send about_to_show: %s", error->message);
/* Note: we're just ensuring only the callback gets called */
need_update = FALSE;
+ g_error_free(error);
+ error = NULL;
} else {
g_variant_get(params, "(b)", &need_update);
g_variant_unref(params);
@@ -1563,6 +1565,7 @@ update_layout_cb (GObject * proxy, GAsyncResult * res, gpointer data)
if (error != NULL) {
g_warning("Getting layout failed: %s", error->message);
+ g_error_free(error);
return;
}
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index 827d6c5..b40195c 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -1204,11 +1204,17 @@ dbusmenu_menuitem_properties_list (DbusmenuMenuitem * mi)
return g_hash_table_get_keys(priv->properties);
}
+/* Copy the keys and make references to the variants that are
+ in the new table. They'll be free'd and unref'd when the
+ Hashtable gets destroyed. */
static void
copy_helper (gpointer in_key, gpointer in_value, gpointer in_data)
{
GHashTable * table = (GHashTable *)in_data;
- g_hash_table_insert(table, in_key, in_value);
+ gchar * key = (gchar *)in_key;
+ GVariant * value = (GVariant *)in_value;
+ g_variant_ref(value);
+ g_hash_table_insert(table, g_strdup(key), value);
return;
}
@@ -1229,7 +1235,7 @@ copy_helper (gpointer in_key, gpointer in_value, gpointer in_data)
GHashTable *
dbusmenu_menuitem_properties_copy (DbusmenuMenuitem * mi)
{
- GHashTable * ret = g_hash_table_new(g_str_hash, g_str_equal);
+ GHashTable * ret = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, _g_variant_unref);
g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), ret);