* src/modest-tny-account-store.c:
[modest] / src / modest-tny-account-store.c
index 2bdb4eb..5e9bb8d 100644 (file)
 #include <string.h>
 #include <glib/gi18n.h>
 
+#include <tny-error.h>
 #include <tny-account.h>
 #include <tny-account-store.h>
 #include <tny-store-account.h>
-#include <tny-error.h>
 #include <tny-transport-account.h>
 #include <tny-simple-list.h>
 #include <tny-account-store.h>
@@ -853,6 +853,8 @@ modest_tny_account_store_finalize (GObject *obj)
                camel_object_unref (CAMEL_OBJECT(priv->session));
                priv->session = NULL;
        }
+
+       camel_shutdown ();
        
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
@@ -1063,7 +1065,7 @@ modest_tny_account_store_alert (TnyAccountStore *self,
                                TnyAccount *account, 
                                TnyAlertType type,
                                gboolean question, 
-                               const GError *error)
+                               GError *error)
 {
        ModestTransportStoreProtocol proto =
                MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN; 
@@ -1163,15 +1165,15 @@ modest_tny_account_store_init (gpointer g, gpointer iface_data)
 
        klass = (TnyAccountStoreIface *)g;
 
-       klass->get_accounts_func =
+       klass->get_accounts =
                modest_tny_account_store_get_accounts;
-       klass->get_cache_dir_func =
+       klass->get_cache_dir =
                modest_tny_account_store_get_cache_dir;
-       klass->get_device_func =
+       klass->get_device =
                modest_tny_account_store_get_device;
-       klass->alert_func =
+       klass->alert =
                modest_tny_account_store_alert;
-       klass->find_account_func =
+       klass->find_account =
                modest_tny_account_store_find_account_by_url;
 }
 
@@ -1199,14 +1201,25 @@ get_tny_account_by (TnyList *accounts,
        gboolean found = FALSE;
        TnyAccount *retval = NULL;
 
-       g_return_val_if_fail (accounts && TNY_IS_LIST(accounts), NULL);
+       g_return_val_if_fail (TNY_IS_LIST(accounts), NULL);
 
+       if (tny_list_get_length(accounts) == 0) {
+               g_warning ("%s: account list is empty", __FUNCTION__);
+               return NULL;
+       }
+       
        iter = tny_list_create_iterator (accounts);
        while (!tny_iterator_is_done (iter) && !found) {
                TnyAccount *tmp_account = NULL;
                const gchar *val = NULL;
 
                tmp_account = TNY_ACCOUNT (tny_iterator_get_current (iter));
+               if (!TNY_IS_ACCOUNT(tmp_account)) {
+                       g_warning ("%s: not a valid account", __FUNCTION__);
+                       tmp_account = NULL;
+                       break;
+               }
+
                switch (type) {
                case MODEST_TNY_ACCOUNT_STORE_QUERY_ID:
                        val = tny_account_get_id (tmp_account);
@@ -1221,7 +1234,7 @@ get_tny_account_by (TnyList *accounts,
                        retval = g_object_ref (tmp_account);
                        found = TRUE;
                } else {
-                       if (strcmp (val, str) == 0) {
+                       if (val && str && strcmp (val, str) == 0) {
                                retval = g_object_ref (tmp_account);
                                found = TRUE;
                        }
@@ -1321,6 +1334,7 @@ modest_tny_account_store_get_server_account (ModestTnyAccountStore *self,
                g_object_unref (tmp_account);
                tny_iterator_next (iter);
        }
+       g_object_unref (iter);
 
        if (!found) {
                g_printerr ("modest: %s: could not get tny %s account for %s\n." \
@@ -1840,6 +1854,7 @@ modest_tny_account_store_find_msg_in_outboxes (ModestTnyAccountStore *self,
                        g_object_unref (folder);
                        tny_iterator_next (folders_iter);
                }
+               g_object_unref (folders_iter);
 
                g_object_unref (folders);
                g_object_unref (account);