diff options
author | Daniel Boles <dboles@src.gnome.org> | 2017-09-12 21:56:46 +0100 |
---|---|---|
committer | Daniel Boles <dboles@src.gnome.org> | 2017-09-18 18:20:02 +0100 |
commit | bfe54d1185e218cef1424ba1c561784f6a04e7a5 (patch) | |
tree | 1e258b763c0242f1fa843d54f5ec2c88e4fd1dfd | |
parent | c477dad41d237c35d4e69e803606f38c213ad018 (diff) | |
download | gtk+-bfe54d1185e218cef1424ba1c561784f6a04e7a5.tar.gz |
SidebarRow: Unref CloudProvider on change/finalize
It was never unref()d, either when replacing the existing GObject in
set_property(), cleaning up in finalize(), or becoming a placeholder.
Fix by using g_set_object() and g_clear_object() to unref as needed.
This also drops the check that the newly set object is a valid cloud
provider account, as we don’t do the equivalent for any of the other
object-typed properties, and Carlos didn’t think this was important.
https://bugzilla.gnome.org/show_bug.cgi?id=787600
-rw-r--r-- | gtk/gtksidebarrow.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/gtk/gtksidebarrow.c b/gtk/gtksidebarrow.c index cfa28b580f..20ef9a5729 100644 --- a/gtk/gtksidebarrow.c +++ b/gtk/gtksidebarrow.c @@ -267,15 +267,10 @@ gtk_sidebar_row_set_property (GObject *object, break; case PROP_CLOUD_PROVIDER: - { #ifdef HAVE_CLOUDPROVIDERS - gpointer *object; - object = g_value_get_object (value); - if (IS_CLOUD_PROVIDER_ACCOUNT(object)) - self->cloud_provider = g_object_ref (object); + g_set_object (&self->cloud_provider, g_value_get_object (value)); #endif - break; - } + break; case PROP_PLACEHOLDER: { @@ -297,6 +292,7 @@ gtk_sidebar_row_set_property (GObject *object, g_clear_object (&self->drive); g_clear_object (&self->volume); g_clear_object (&self->mount); + g_clear_object (&self->cloud_provider); gtk_container_foreach (GTK_CONTAINER (self), (GtkCallback) gtk_widget_destroy, @@ -403,6 +399,7 @@ gtk_sidebar_row_finalize (GObject *object) g_clear_object (&self->drive); g_clear_object (&self->volume); g_clear_object (&self->mount); + g_clear_object (&self->cloud_provider); G_OBJECT_CLASS (gtk_sidebar_row_parent_class)->finalize (object); } |