summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonny Lamb <jonny.lamb@collabora.co.uk>2011-03-22 15:08:41 +0000
committerJonny Lamb <jonny.lamb@collabora.co.uk>2011-03-22 15:13:38 +0000
commit901aca41915146f450842d7ab41071d5dd0e4f46 (patch)
tree07556c6cde95b4164669df044a46199cd15806e0
parent018286b9c3f881fe35f2facfb5f52264dd99e231 (diff)
meta-porter: ensure the ClosePorter closure if freed even if there are none to close
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
-rw-r--r--wocky/wocky-meta-porter.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/wocky/wocky-meta-porter.c b/wocky/wocky-meta-porter.c
index 19f166e..e3a8d5f 100644
--- a/wocky/wocky-meta-porter.c
+++ b/wocky/wocky-meta-porter.c
@@ -1282,6 +1282,7 @@ close_all_porters (WockyMetaPorter *self,
WockyMetaPorterPrivate *priv = self->priv;
GSimpleAsyncResult *simple;
GList *porters, *l;
+ gboolean close_called = FALSE;
porters = g_hash_table_get_values (priv->porters);
@@ -1306,12 +1307,18 @@ close_all_porters (WockyMetaPorter *self,
continue;
data->remaining++;
+ close_called = TRUE;
close_async_func (porter_data->porter, cancellable,
porter_close_cb, data);
}
+
+ /* Actually, none of the PorterData structs had C2S porters */
+ if (!close_called)
+ g_slice_free (ClosePorterData, data);
}
- else
+
+ if (!close_called)
{
/* there were no porters to close anyway */
g_simple_async_result_complete (simple);