aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-corba-storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/e-corba-storage.c')
-rw-r--r--shell/e-corba-storage.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/shell/e-corba-storage.c b/shell/e-corba-storage.c
index 49ec7403ae..b7ab36c3f8 100644
--- a/shell/e-corba-storage.c
+++ b/shell/e-corba-storage.c
@@ -596,6 +596,7 @@ async_open_cb (BonoboListener *listener, const char *event_name,
(* closure->callback) (closure->storage, result,
closure->path, closure->data);
if (closure != orig_closure) {
+ g_object_unref (orig_closure->storage);
g_free (closure->path);
g_free (closure);
}
@@ -636,6 +637,8 @@ async_open_folder_idle (gpointer data)
listener = bonobo_listener_new (async_open_cb, closure);
corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (listener));
+ priv->pending_opens = g_list_prepend (priv->pending_opens, closure);
+
CORBA_exception_init (&ev);
GNOME_Evolution_Storage_asyncOpenFolder (priv->storage_interface,
closure->path,
@@ -647,10 +650,12 @@ async_open_folder_idle (gpointer data)
g_object_unref (closure->storage);
g_free (closure->path);
g_free (closure);
+
+ priv->pending_opens = g_list_delete_link (priv->pending_opens,
+ priv->pending_opens);
}
CORBA_exception_free (&ev);
- priv->pending_opens = g_list_prepend (priv->pending_opens, closure);
return FALSE;
}