From f72720c59fc8cd013b016d54488f28a1c949b836 Mon Sep 17 00:00:00 2001
From: asavard <asavard@asavard-KT378AA-A2L-a6552f.(none)>
Date: Wed, 13 Oct 2010 16:10:32 -0400
Subject: [PATCH] [#4261] Makes addressbook initialization more robust

---
 .../src/config/addressbook-config.c           | 17 +++++++++++++++--
 .../src/contacts/addressbook.c                |  2 +-
 .../src/contacts/addressbook/eds.c            | 19 +++++++++++++++++--
 3 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/sflphone-client-gnome/src/config/addressbook-config.c b/sflphone-client-gnome/src/config/addressbook-config.c
index 7f0d2256b1..e8cf69e9b6 100644
--- a/sflphone-client-gnome/src/config/addressbook-config.c
+++ b/sflphone-client-gnome/src/config/addressbook-config.c
@@ -211,7 +211,12 @@ addressbook_config_book_active_toggled (
 
     // Get path of clicked book active toggle box
     treePath = gtk_tree_path_new_from_string (path);
-    model = gtk_tree_view_get_model (GTK_TREE_VIEW (data));
+
+    if(!(model = gtk_tree_view_get_model (GTK_TREE_VIEW (data)))) {
+	DEBUG("Addressbook: No valid model (%s:%d)", __FILE__, __LINE__);
+    	return;
+    }
+
     gtk_tree_model_get_iter (model, &iter, treePath);
 
     // Get active value  at iteration
@@ -276,8 +281,16 @@ addressbook_config_fill_book_list()
     book_data_t *book_data;
     GSList *books_data = addressbook_get_books_data();
 
+    if(!books_data) {
+	DEBUG("Addressbook: No valid books data (%s:%d)", __FILE__, __LINE__);
+    } 
+
     // Get model of view and clear it
-    store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (book_tree_view)));
+    if(!(store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (book_tree_view))))) {
+	DEBUG("Addressbook: Could not find model from treeview (%s:%d)", __FILE__, __LINE__);
+	return;
+    }
+	
     gtk_list_store_clear (store);
 
     // Populate window
diff --git a/sflphone-client-gnome/src/contacts/addressbook.c b/sflphone-client-gnome/src/contacts/addressbook.c
index a6d6a1fe8b..01f203daf7 100644
--- a/sflphone-client-gnome/src/contacts/addressbook.c
+++ b/sflphone-client-gnome/src/contacts/addressbook.c
@@ -113,7 +113,7 @@ addressbook_config_books()
 
             // If book_data exists
             if (!book_data)
-                ERROR ("Addressbook: Error: Could not open book");
+                ERROR ("Addressbook: Error: Could not open book (%s:%d)", __FILE__, __LINE__);
 
             book_data->active = TRUE;
         }
diff --git a/sflphone-client-gnome/src/contacts/addressbook/eds.c b/sflphone-client-gnome/src/contacts/addressbook/eds.c
index b53b694a76..f56b068889 100644
--- a/sflphone-client-gnome/src/contacts/addressbook/eds.c
+++ b/sflphone-client-gnome/src/contacts/addressbook/eds.c
@@ -104,6 +104,11 @@ books_active()
     GSList *book_list_iterator;
     book_data_t *book_data;
 
+    if(!books_data) {
+	DEBUG("Addressbook: No books data (%s:%d)", __FILE__, __LINE__);
+        return FALSE;
+    }
+
     // Iterate throw the list
     for (book_list_iterator = books_data; book_list_iterator != NULL; book_list_iterator
             = book_list_iterator->next) {
@@ -125,6 +130,11 @@ books_get_book_data_by_uid (gchar *uid)
     GSList *book_list_iterator;
     book_data_t *book_data;
 
+    if(!books_data) {
+	DEBUG("Addressbook: No books data (%s:%d)", __FILE__, __LINE__);
+	return NULL;
+    }
+
     DEBUG ("Addressbook: Get book data by uid: %s", uid);
 
     // Iterate throw the list
@@ -517,14 +527,14 @@ fill_books_data ()
     source_list = e_source_list_new_for_gconf_default ("/apps/evolution/addressbook/sources");
 
     if (source_list == NULL) {
-        DEBUG ("Addressbook: Error could not initialize source list for addressbook");
+        DEBUG ("Addressbook: Error could not initialize source list for addressbook (%s:%d)", __FILE__, __LINE__);
         return;
     }
 
     list = e_source_list_peek_groups (source_list);
 
     if (!list) {
-        DEBUG ("Addressbook: Address Book source groups are missing! Check your GConf setup.");
+        DEBUG ("Addressbook: Address Book source groups are missing (%s:%d)! Check your GConf setup.", __FILE__, __LINE__);
         return;
     }
 
@@ -650,6 +660,11 @@ set_current_addressbook (const gchar *name)
     GSList *book_list_iterator;
     book_data_t *book_data;
 
+    if(!books_data) {
+        DEBUG("Addressbook: No books data (%s:%d)", __FILE__, __LINE__);
+        return NULL;
+    }
+
     // Iterate throw the list
     for (book_list_iterator = books_data; book_list_iterator != NULL; book_list_iterator
             = book_list_iterator->next) {
-- 
GitLab