diff options
author | Chris Toshok <toshok@ximian.com> | 2002-11-10 17:49:37 +0800 |
---|---|---|
committer | Chris Toshok <toshok@src.gnome.org> | 2002-11-10 17:49:37 +0800 |
commit | 9aa24e5bd2d516b9722db784a16fd3ef838037a1 (patch) | |
tree | cf9bfd4dacba4a19b7c2b0d57d9d79757c7ed55d /addressbook/backend/pas/pas-book-factory.c | |
parent | 28bc0361b9db902a9bcca18cfc5c1b9cc37a7229 (diff) | |
download | gsoc2013-evolution-9aa24e5bd2d516b9722db784a16fd3ef838037a1.tar gsoc2013-evolution-9aa24e5bd2d516b9722db784a16fd3ef838037a1.tar.gz gsoc2013-evolution-9aa24e5bd2d516b9722db784a16fd3ef838037a1.tar.bz2 gsoc2013-evolution-9aa24e5bd2d516b9722db784a16fd3ef838037a1.tar.lz gsoc2013-evolution-9aa24e5bd2d516b9722db784a16fd3ef838037a1.tar.xz gsoc2013-evolution-9aa24e5bd2d516b9722db784a16fd3ef838037a1.tar.zst gsoc2013-evolution-9aa24e5bd2d516b9722db784a16fd3ef838037a1.zip |
guard against multiple invocations.
2002-11-10 Chris Toshok <toshok@ximian.com>
* backend/pas/pas-backend-card-sexp.c
(pas_backend_card_sexp_dispose): guard against multiple
invocations.
* backend/pas/pas-card-cursor.c (pas_card_cursor_dispose): same.
* backend/pas/pas-book.c (pas_book_dispose): same.
* backend/pas/pas-book-view.c (pas_book_view_dispose): same.
* backend/pas/pas-book-factory.c (pas_book_factory_dispose): same.
* backend/pas/pas-backend-summary.c (pas_backend_summary_dispose): same.
* backend/pas/pas-backend-ldap.c (pas_backend_ldap_dispose): same.
* backend/pas/pas-backend-file.c (pas_backend_file_dispose): same.
* backend/ebook/e-book-listener.c (e_book_listener_dispose): guard
against multiple invocations.
* backend/ebook/e-card.c (e_card_dispose): same.
* backend/ebook/e-card-simple.c (e_card_simple_dispose): same.
* backend/ebook/e-card-cursor.c (e_card_cursor_dispose): same.
* backend/ebook/e-book.c (e_book_dispose): same.
* backend/ebook/e-book-view-listener.c (e_book_view_listener_dispose): same.
svn path=/trunk/; revision=18687
Diffstat (limited to 'addressbook/backend/pas/pas-book-factory.c')
-rw-r--r-- | addressbook/backend/pas/pas-book-factory.c | 71 |
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 |