From 9aa24e5bd2d516b9722db784a16fd3ef838037a1 Mon Sep 17 00:00:00 2001 From: Chris Toshok Date: Sun, 10 Nov 2002 09:49:37 +0000 Subject: guard against multiple invocations. 2002-11-10 Chris Toshok * 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 --- addressbook/backend/ebook/e-book-view-listener.c | 48 +++++++++++++----------- 1 file changed, 26 insertions(+), 22 deletions(-) (limited to 'addressbook/backend/ebook/e-book-view-listener.c') diff --git a/addressbook/backend/ebook/e-book-view-listener.c b/addressbook/backend/ebook/e-book-view-listener.c index 1ac4a7ef83..fe50cf037b 100644 --- a/addressbook/backend/ebook/e-book-view-listener.c +++ b/addressbook/backend/ebook/e-book-view-listener.c @@ -374,35 +374,39 @@ static void e_book_view_listener_dispose (GObject *object) { EBookViewListener *listener = E_BOOK_VIEW_LISTENER (object); - GList *l; - - /* Remove our response queue handler: In theory, this can never happen since we - always hold a reference to the listener while the timeout is running. */ - if (listener->priv->timeout_id) { - g_source_remove (listener->priv->timeout_id); - } - /* Clear out the queue */ - for (l = listener->priv->response_queue; l != NULL; l = l->next) { - EBookViewListenerResponse *resp = l->data; + if (listener->priv) { + GList *l; + /* Remove our response queue handler: In theory, this + can never happen since we always hold a reference + to the listener while the timeout is running. */ + if (listener->priv->timeout_id) { + g_source_remove (listener->priv->timeout_id); + } - g_free(resp->id); + /* Clear out the queue */ + for (l = listener->priv->response_queue; l != NULL; l = l->next) { + EBookViewListenerResponse *resp = l->data; - g_list_foreach(resp->cards, (GFunc) g_object_unref, NULL); - g_list_free(resp->cards); - resp->cards = NULL; + g_free(resp->id); - g_free (resp->message); - resp->message = NULL; + g_list_foreach(resp->cards, (GFunc) g_object_unref, NULL); + g_list_free(resp->cards); + resp->cards = NULL; - g_free (resp); - } - g_list_free (listener->priv->response_queue); + g_free (resp->message); + resp->message = NULL; + + g_free (resp); + } + g_list_free (listener->priv->response_queue); - g_free (listener->priv); - listener->priv = NULL; + g_free (listener->priv); + listener->priv = NULL; + } - G_OBJECT_CLASS (parent_class)->dispose (object); + if (G_OBJECT_CLASS (parent_class)->dispose) + G_OBJECT_CLASS (parent_class)->dispose (object); } static void -- cgit v1.2.3