Merge lp:~chrisccoulson/libdbusmenu/lp1104136 into lp:libdbusmenu/13.04

Proposed by Chris Coulson
Status: Merged
Approved by: Ted Gould
Approved revision: 440
Merged at revision: 440
Proposed branch: lp:~chrisccoulson/libdbusmenu/lp1104136
Merge into: lp:libdbusmenu/13.04
Diff against target: 88 lines (+14/-5)
2 files modified
libdbusmenu-glib/menuitem.c (+3/-1)
libdbusmenu-glib/server.c (+11/-4)
To merge this branch: bzr merge lp:~chrisccoulson/libdbusmenu/lp1104136
Reviewer Review Type Date Requested Status
Ted Gould (community) Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+144733@code.launchpad.net

Description of the change

Fix multiple leaks due to improper use of g_variant_parse() (fixes bug 1104136)

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Ted Gould (ted) wrote :

Hate GVariants.... Can't believe this isn't a floating reference.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'libdbusmenu-glib/menuitem.c'
--- libdbusmenu-glib/menuitem.c 2012-12-17 21:59:01 +0000
+++ libdbusmenu-glib/menuitem.c 2013-01-24 15:58:21 +0000
@@ -1656,7 +1656,9 @@
1656 if (props != NULL) {1656 if (props != NULL) {
1657 g_variant_builder_add_value(&tupleb, props);1657 g_variant_builder_add_value(&tupleb, props);
1658 } else {1658 } else {
1659 g_variant_builder_add_value(&tupleb, g_variant_parse(G_VARIANT_TYPE("a{sv}"), "[ ]", NULL, NULL, NULL));1659 GVariant *empty_props = g_variant_parse(G_VARIANT_TYPE("a{sv}"), "[ ]", NULL, NULL, NULL);
1660 g_variant_builder_add_value(&tupleb, empty_props);
1661 g_variant_unref(empty_props);
1660 }1662 }
16611663
1662 /* Pillage the children */1664 /* Pillage the children */
16631665
=== modified file 'libdbusmenu-glib/server.c'
--- libdbusmenu-glib/server.c 2013-01-22 16:25:12 +0000
+++ libdbusmenu-glib/server.c 2013-01-24 15:58:21 +0000
@@ -1070,8 +1070,6 @@
1070 g_error_free(error);1070 g_error_free(error);
1071 megadata[0] = NULL;1071 megadata[0] = NULL;
1072 error_nosend = TRUE;1072 error_nosend = TRUE;
1073 } else {
1074 g_variant_ref_sink(megadata[0]);
1075 }1073 }
1076 }1074 }
10771075
@@ -1088,8 +1086,6 @@
1088 g_error_free(error);1086 g_error_free(error);
1089 megadata[1] = NULL;1087 megadata[1] = NULL;
1090 error_nosend = TRUE;1088 error_nosend = TRUE;
1091 } else {
1092 g_variant_ref_sink(megadata[1]);
1093 }1089 }
1094 }1090 }
10951091
@@ -1331,6 +1327,9 @@
13311327
1332 if (mi != NULL) {1328 if (mi != NULL) {
1333 items = dbusmenu_menuitem_build_variant(mi, props, recurse);1329 items = dbusmenu_menuitem_build_variant(mi, props, recurse);
1330 if (items) {
1331 g_variant_ref_sink(items);
1332 }
1334 }1333 }
1335 }1334 }
1336 g_free(props);1335 g_free(props);
@@ -1360,6 +1359,8 @@
1360 g_variant_builder_add_value(&tuplebuilder, g_variant_new_uint32(revision));1359 g_variant_builder_add_value(&tuplebuilder, g_variant_new_uint32(revision));
1361 g_variant_builder_add_value(&tuplebuilder, items);1360 g_variant_builder_add_value(&tuplebuilder, items);
13621361
1362 g_variant_unref(items);
1363
1363 GVariant * retval = g_variant_builder_end(&tuplebuilder);1364 GVariant * retval = g_variant_builder_end(&tuplebuilder);
1364 // g_debug("Sending layout type: %s", g_variant_get_type_string(retval));1365 // g_debug("Sending layout type: %s", g_variant_get_type_string(retval));
1365 g_dbus_method_invocation_return_value(invocation,1366 g_dbus_method_invocation_return_value(invocation,
@@ -1504,6 +1505,9 @@
1504 g_variant_builder_init(&wbuilder, G_VARIANT_TYPE_TUPLE);1505 g_variant_builder_init(&wbuilder, G_VARIANT_TYPE_TUPLE);
1505 g_variant_builder_add(&wbuilder, "i", id);1506 g_variant_builder_add(&wbuilder, "i", id);
1506 GVariant * props = dbusmenu_menuitem_properties_variant(mi, NULL);1507 GVariant * props = dbusmenu_menuitem_properties_variant(mi, NULL);
1508 if (props != NULL) {
1509 g_variant_ref(props);
1510 }
15071511
1508 if (props == NULL) {1512 if (props == NULL) {
1509 GError * error = NULL;1513 GError * error = NULL;
@@ -1516,6 +1520,7 @@
1516 }1520 }
15171521
1518 g_variant_builder_add_value(&wbuilder, props);1522 g_variant_builder_add_value(&wbuilder, props);
1523 g_variant_unref(props);
1519 GVariant * mi_data = g_variant_builder_end(&wbuilder);1524 GVariant * mi_data = g_variant_builder_end(&wbuilder);
15201525
1521 g_variant_builder_add_value(&builder, mi_data);1526 g_variant_builder_add_value(&builder, mi_data);
@@ -1613,6 +1618,7 @@
16131618
1614 GVariant * end = g_variant_builder_end(&builder);1619 GVariant * end = g_variant_builder_end(&builder);
1615 ret = g_variant_new_tuple(&end, 1);1620 ret = g_variant_new_tuple(&end, 1);
1621 g_variant_ref_sink(ret);
1616 } else {1622 } else {
1617 GError * error = NULL;1623 GError * error = NULL;
1618 ret = g_variant_parse(G_VARIANT_TYPE("(a(ia{sv}))"), "([(0, {})],)", NULL, NULL, &error);1624 ret = g_variant_parse(G_VARIANT_TYPE("(a(ia{sv}))"), "([(0, {})],)", NULL, NULL, &error);
@@ -1624,6 +1630,7 @@
1624 }1630 }
16251631
1626 g_dbus_method_invocation_return_value(invocation, ret);1632 g_dbus_method_invocation_return_value(invocation, ret);
1633 g_variant_unref(ret);
1627 return;1634 return;
1628}1635}
16291636

Subscribers

People subscribed via source and target branches

to all changes: