diff options
author | Christophe Fergeau <cfergeau@redhat.com> | 2015-06-23 10:29:50 +0200 |
---|---|---|
committer | Christophe Fergeau <cfergeau@redhat.com> | 2015-07-16 11:49:40 +0200 |
commit | c33ac8bca97f6b844f54861dd1cdad241d5eedfa (patch) | |
tree | f7d6d832c382e5e43382917804f8ef6627652ec3 /shell/cc-application.c | |
parent | c84722248e41946fd995cff3ce773f9b80b2f4d7 (diff) | |
download | gnome-control-center-c33ac8bca97f6b844f54861dd1cdad241d5eedfa.tar.gz |
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
Diffstat (limited to 'shell/cc-application.c')
-rw-r--r-- | shell/cc-application.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/shell/cc-application.c b/shell/cc-application.c index 936f902bc..353f09c73 100644 --- a/shell/cc-application.c +++ b/shell/cc-application.c @@ -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, |