shell: Fix GVariantBuilder leak

When a GVariantBuilder is created with g_variant_builder_new(), it must
be unref'ed with g_variant_builder_unref() when no longer needed. In
this case, we can just use a local stack-allocated GVariantBuilder to
avoid the leak.

https://bugzilla.gnome.org/show_bug.cgi?id=751597
This commit is contained in:
Christophe Fergeau 2015-06-23 10:29:50 +02:00
parent c84722248e
commit c33ac8bca9

View file

@ -216,7 +216,7 @@ cc_application_command_line (GApplication *application,
const char *start_id;
GError *err = NULL;
GVariant *parameters;
GVariantBuilder *builder;
GVariantBuilder builder;
int i;
start_id = start_panels[0];
@ -226,10 +226,11 @@ cc_application_command_line (GApplication *application,
else
g_debug ("No extra argument");
builder = g_variant_builder_new (G_VARIANT_TYPE ("av"));
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
for (i = 1; start_panels[i] != NULL; i++)
g_variant_builder_add (builder, "v", g_variant_new_string (start_panels[i]));
parameters = g_variant_builder_end (builder);
g_variant_builder_add (&builder, "v", g_variant_new_string (start_panels[i]));
parameters = g_variant_builder_end (&builder);
if (!cc_shell_set_active_panel_from_id (CC_SHELL (self->priv->window), start_id, parameters, &err))
{
g_warning ("Could not load setting panel \"%s\": %s", start_id,