From 3b75abc45c51f18be79ac15685efc28ecc822851 Mon Sep 17 00:00:00 2001 From: Jonny Lamb Date: Wed, 6 Apr 2011 10:34:02 +0100 Subject: meta-porter: disconnect porter signal handlers before trying to close it Signed-off-by: Jonny Lamb --- wocky/wocky-meta-porter.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/wocky/wocky-meta-porter.c b/wocky/wocky-meta-porter.c index 1b5b6f9..165652d 100644 --- a/wocky/wocky-meta-porter.c +++ b/wocky/wocky-meta-porter.c @@ -115,6 +115,8 @@ wocky_meta_porter_error_quark (void) static void register_porter_handlers (WockyMetaPorter *self, WockyPorter *porter, WockyContact *contact); +static void disconnect_porter_signal_handlers (WockyPorter *porter, + PorterData *data); static void porter_data_free (gpointer data) @@ -123,6 +125,10 @@ porter_data_free (gpointer data) if (p->porter != NULL) { + /* We have to make sure we disconnect the handlers or ::closing + * will be fired by close_async, then the callback will unref + * p->porter before we have a chance to do it outselves. */ + disconnect_porter_signal_handlers (p->porter, p); wocky_porter_close_async (p->porter, NULL, NULL, NULL); g_object_unref (p->porter); } -- cgit v1.2.1