aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/ebook/e-book.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend/ebook/e-book.c')
-rw-r--r--addressbook/backend/ebook/e-book.c47
1 files changed, 27 insertions, 20 deletions
diff --git a/addressbook/backend/ebook/e-book.c b/addressbook/backend/ebook/e-book.c
index 40938b1e8f..e236bc04ea 100644
--- a/addressbook/backend/ebook/e-book.c
+++ b/addressbook/backend/ebook/e-book.c
@@ -1477,35 +1477,42 @@ static void
e_book_dispose (GObject *object)
{
EBook *book = E_BOOK (object);
- CORBA_Environment ev;
- GList *l;
- if (book->priv->load_state == URILoaded)
- e_book_unload_uri (book);
+ if (book->priv) {
+ CORBA_Environment ev;
+ GList *l;
- CORBA_exception_init (&ev);
+ if (book->priv->load_state == URILoaded)
+ e_book_unload_uri (book);
- for (l = book->priv->book_factories; l; l = l->next) {
- CORBA_Object_release ((CORBA_Object)l->data, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_warning ("EBook: Exception while releasing BookFactory\n");
+ CORBA_exception_init (&ev);
+
+ for (l = book->priv->book_factories; l; l = l->next) {
+ CORBA_Object_release ((CORBA_Object)l->data, &ev);
+ if (ev._major != CORBA_NO_EXCEPTION) {
+ g_warning ("EBook: Exception while releasing BookFactory\n");
- CORBA_exception_free (&ev);
- CORBA_exception_init (&ev);
+ CORBA_exception_free (&ev);
+ CORBA_exception_init (&ev);
+ }
}
- }
- if (book->priv->comp_listener) {
- g_signal_handler_disconnect (book->priv->comp_listener, book->priv->died_signal);
- g_object_unref (book->priv->comp_listener);
- book->priv->comp_listener = NULL;
- }
+ CORBA_exception_free (&ev);
- g_free (book->priv->uri);
+ if (book->priv->comp_listener) {
+ g_signal_handler_disconnect (book->priv->comp_listener, book->priv->died_signal);
+ g_object_unref (book->priv->comp_listener);
+ book->priv->comp_listener = NULL;
+ }
+
+ g_free (book->priv->uri);
- g_free (book->priv);
+ g_free (book->priv);
+ book->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