Index: libdbusmenu-0.3.16/libdbusmenu-glib/client.c =================================================================== --- libdbusmenu-0.3.16.orig/libdbusmenu-glib/client.c 2010-12-15 22:09:33.839192280 +0800 +++ libdbusmenu-0.3.16/libdbusmenu-glib/client.c 2010-12-15 22:10:48.629284610 +0800 @@ -461,7 +461,9 @@ properties_listener_t * listener = &g_array_index(listeners, properties_listener_t, i); listener->callback(proxy, NULL, error, listener->user_data); } + g_error_free(error); g_array_free(listeners, TRUE); + if (OUT_properties) g_ptr_array_unref(OUT_properties); return; } @@ -518,6 +520,7 @@ /* Clean up */ g_array_free(listeners, TRUE); + g_ptr_array_unref(OUT_properties); return; } @@ -750,6 +753,7 @@ name_owner_check (DBusGProxy *proxy, gboolean has_owner, GError *error, gpointer userdata) { if (error != NULL) { + g_error_free(error); return; } @@ -957,6 +961,7 @@ g_return_if_fail(DBUSMENU_IS_MENUITEM(data)); if (error != NULL) { g_warning("Error getting properties on a menuitem: %s", error->message); + g_error_free(error); g_object_unref(data); return; } @@ -992,6 +997,7 @@ if (!have_error) { menuitem_get_properties_cb(proxy, properties, error, data); } else { + g_error_free(error); g_object_unref(data); } @@ -1384,11 +1390,13 @@ if (error != NULL) { g_warning("Getting layout failed on client %s object %s: %s", priv->dbus_name, priv->dbus_object, error->message); + g_error_free(error); return; } if (!parse_layout(client, xml)) { g_warning("Unable to parse layout!"); + g_free(xml); return; } @@ -1406,6 +1414,7 @@ update_layout(client); } + g_free(xml); return; } Index: libdbusmenu-0.3.16/libdbusmenu-glib/menuitem.c =================================================================== --- libdbusmenu-0.3.16.orig/libdbusmenu-glib/menuitem.c 2010-12-16 08:02:13.002404000 +0800 +++ libdbusmenu-0.3.16/libdbusmenu-glib/menuitem.c 2010-12-16 08:04:43.315463343 +0800 @@ -1193,6 +1193,14 @@ return; } +static void +free_value_ptr (gpointer value) +{ + GValue *vvalue = (GValue *)value; + g_value_unset(vvalue); + g_free(vvalue); +} + /** dbusmenu_menuitem_properties_copy: @mi: #DbusmenuMenuitem that we're interested in the properties of @@ -1210,7 +1218,8 @@ 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, + free_value_ptr); g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), ret);