From dc1a7834fa4749d090dd6b3ad4a3aac332941c50 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 7 Apr 2010 13:40:22 +0100 Subject: location_manager_dispose: chain up to the parent's dispose, not the parent's finalize This leads to crashes when other code is relying on weak reference notifications happening in the right order. --- libempathy-gtk/empathy-location-manager.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'libempathy-gtk') diff --git a/libempathy-gtk/empathy-location-manager.c b/libempathy-gtk/empathy-location-manager.c index 4ef27dba7..0422f5cc6 100644 --- a/libempathy-gtk/empathy-location-manager.c +++ b/libempathy-gtk/empathy-location-manager.c @@ -98,6 +98,8 @@ static void location_manager_dispose (GObject *object) { EmpathyLocationManagerPriv *priv = GET_PRIV (object); + void (*dispose) (GObject *) = + G_OBJECT_CLASS (empathy_location_manager_parent_class)->dispose; if (priv->account_manager != NULL) { @@ -129,7 +131,8 @@ location_manager_dispose (GObject *object) priv->location = NULL; } - G_OBJECT_CLASS (empathy_location_manager_parent_class)->finalize (object); + if (dispose != NULL) + dispose (object); } static void -- cgit v1.2.3