aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/pas/pas-book-factory.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend/pas/pas-book-factory.c')
-rw-r--r--addressbook/backend/pas/pas-book-factory.c71
1 files changed, 38 insertions, 33 deletions
diff --git a/addressbook/backend/pas/pas-book-factory.c b/addressbook/backend/pas/pas-book-factory.c
index 5ca1af6acc..e775553958 100644
--- a/addressbook/backend/pas/pas-book-factory.c
+++ b/addressbook/backend/pas/pas-book-factory.c
@@ -513,47 +513,52 @@ static void
pas_book_factory_dispose (GObject *object)
{
PASBookFactory *factory = PAS_BOOK_FACTORY (object);
- PASBookFactoryPrivate *priv = factory->priv;
- GList *l;
+ if (factory->priv) {
+ PASBookFactoryPrivate *priv = factory->priv;
+ GList *l;
- for (l = priv->queued_requests; l != NULL; l = l->next) {
- PASBookFactoryQueuedRequest *request = l->data;
- CORBA_Environment ev;
-
- g_free (request->uri);
-
- CORBA_exception_init (&ev);
- CORBA_Object_release (request->listener, &ev);
- CORBA_exception_free (&ev);
-
- g_free (request);
- }
- g_list_free (priv->queued_requests);
- priv->queued_requests = NULL;
+ for (l = priv->queued_requests; l != NULL; l = l->next) {
+ PASBookFactoryQueuedRequest *request = l->data;
+ CORBA_Environment ev;
- g_hash_table_foreach (priv->active_server_map,
- free_active_server_map_entry,
- NULL);
- g_hash_table_destroy (priv->active_server_map);
- priv->active_server_map = NULL;
+ g_free (request->uri);
- g_hash_table_foreach (priv->backends,
- remove_backends_entry,
- NULL);
- g_hash_table_destroy (priv->backends);
- priv->backends = NULL;
+ CORBA_exception_init (&ev);
+ CORBA_Object_release (request->listener, &ev);
+ CORBA_exception_free (&ev);
- if (priv->registered) {
- bonobo_activation_active_server_unregister (priv->iid, bonobo_object_corba_objref (BONOBO_OBJECT (factory)));
- priv->registered = FALSE;
- }
+ g_free (request);
+ }
+ g_list_free (priv->queued_requests);
+ priv->queued_requests = NULL;
+
+ g_hash_table_foreach (priv->active_server_map,
+ free_active_server_map_entry,
+ NULL);
+ g_hash_table_destroy (priv->active_server_map);
+ priv->active_server_map = NULL;
+
+ g_hash_table_foreach (priv->backends,
+ remove_backends_entry,
+ NULL);
+ g_hash_table_destroy (priv->backends);
+ priv->backends = NULL;
+
+ if (priv->registered) {
+ bonobo_activation_active_server_unregister (priv->iid,
+ bonobo_object_corba_objref (BONOBO_OBJECT (factory)));
+ priv->registered = FALSE;
+ }
- g_free (priv->iid);
+ g_free (priv->iid);
- g_free (priv);
+ g_free (priv);
+ factory->priv = NULL;
+ }
- G_OBJECT_CLASS (pas_book_factory_parent_class)->dispose (object);
+ if (G_OBJECT_CLASS (pas_book_factory_parent_class)->dispose)
+ G_OBJECT_CLASS (pas_book_factory_parent_class)->dispose (object);
}
static void