diff options
author | Ted Gould <ted@gould.cx> | 2011-01-18 10:32:29 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2011-01-18 10:32:29 -0600 |
commit | 31d28c2b7f818749973aa528fca53632a129f83d (patch) | |
tree | 427178bb09b68f264e8fef42874ee08972bf8015 /libdbusmenu-glib | |
parent | 499e96b9384305466173d986ddb9c53f8b01640b (diff) | |
download | libdbusmenu-31d28c2b7f818749973aa528fca53632a129f83d.tar.gz libdbusmenu-31d28c2b7f818749973aa528fca53632a129f83d.tar.bz2 libdbusmenu-31d28c2b7f818749973aa528fca53632a129f83d.zip |
Fixing builder to only init/finish if there are entries we get.
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r-- | libdbusmenu-glib/server.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c index 100eb14..03886bb 100644 --- a/libdbusmenu-glib/server.c +++ b/libdbusmenu-glib/server.c @@ -894,13 +894,18 @@ bus_get_group_properties (DbusmenuServer * server, GVariant * params, GDBusMetho g_variant_iter_init(&ids, g_variant_get_child_value(params, 0)); GVariantBuilder builder; - g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); + gboolean builder_init = FALSE; gint id; while (g_variant_iter_next(&ids, "i", &id)) { DbusmenuMenuitem * mi = dbusmenu_menuitem_find_id(priv->root, id); if (mi == NULL) continue; + if (!builder_init) { + g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); + builder_init = TRUE; + } + GVariantBuilder wbuilder; g_variant_builder_init(&wbuilder, G_VARIANT_TYPE_TUPLE); g_variant_builder_add(&wbuilder, "i", id); @@ -916,7 +921,13 @@ bus_get_group_properties (DbusmenuServer * server, GVariant * params, GDBusMetho g_variant_builder_add_value(&builder, mi_data); } - GVariant * ret = g_variant_builder_end(&builder); + GVariant * ret = NULL; + + if (builder_init) { + ret = g_variant_builder_end(&builder); + } else { + ret = g_variant_parse(g_variant_type_new("a(ia(sv))"), "[]", NULL, NULL, NULL); + } g_variant_builder_init(&builder, G_VARIANT_TYPE_TUPLE); g_variant_builder_add_value(&builder, ret); |