Fixes several potential infinite loops with corrupted account data
authorSergio Villar Senin <svillar@igalia.com>
Wed, 28 Jan 2009 11:51:25 +0000 (11:51 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Wed, 28 Jan 2009 11:51:25 +0000 (11:51 +0000)
pmo-trunk-r7330

src/hildon2/modest-hildon2-global-settings-dialog.c
src/modest-account-mgr.c
src/modest-tny-folder.c
src/modest-tny-msg.c

index 99ecd07..affde22 100644 (file)
@@ -440,6 +440,7 @@ get_accounts_list (void)
                settings = modest_account_mgr_load_account_settings (account_mgr, account_name);
                if (!settings) {
                        g_printerr ("modest: failed to get account data for %s\n", account_name);
                settings = modest_account_mgr_load_account_settings (account_mgr, account_name);
                if (!settings) {
                        g_printerr ("modest: failed to get account data for %s\n", account_name);
+                       cursor = cursor->next;
                        continue;
                }
                store_settings = modest_account_settings_get_store_settings (settings);
                        continue;
                }
                store_settings = modest_account_settings_get_store_settings (settings);
index 913d7d4..c3e12dc 100644 (file)
@@ -768,9 +768,11 @@ modest_account_mgr_account_names (ModestAccountMgr * self, gboolean only_enabled
        /* Unescape the keys to get the account names: */
        GSList *iter = accounts;
        while (iter) {
        /* Unescape the keys to get the account names: */
        GSList *iter = accounts;
        while (iter) {
-               if (!(iter->data))
+               if (!(iter->data)) {
+                       iter = iter->next;
                        continue;
                        continue;
-                       
+               }
+
                const gchar* account_name_key = (const gchar*)iter->data;
                gchar* unescaped_name = account_name_key ? 
                        modest_conf_key_unescape (account_name_key) 
                const gchar* account_name_key = (const gchar*)iter->data;
                gchar* unescaped_name = account_name_key ? 
                        modest_conf_key_unescape (account_name_key) 
@@ -1132,6 +1134,7 @@ modest_account_mgr_account_with_display_name_exists  (ModestAccountMgr *self,
                ModestAccountSettings *settings = modest_account_mgr_load_account_settings (self, account_name);
                if (!settings) {
                        g_printerr ("modest: failed to get account data for %s\n", account_name);
                ModestAccountSettings *settings = modest_account_mgr_load_account_settings (self, account_name);
                if (!settings) {
                        g_printerr ("modest: failed to get account data for %s\n", account_name);
+                       cursor = cursor->next;
                        continue;
                }
 
                        continue;
                }
 
@@ -1210,6 +1213,7 @@ modest_account_mgr_check_already_configured_account  (ModestAccountMgr *self,
                from_mgr_settings = modest_account_mgr_load_account_settings (self, account_name);
                if (!settings) {
                        g_printerr ("modest: failed to get account data for %s\n", account_name);
                from_mgr_settings = modest_account_mgr_load_account_settings (self, account_name);
                if (!settings) {
                        g_printerr ("modest: failed to get account data for %s\n", account_name);
+                       cursor = cursor->next;
                        continue;
                }
 
                        continue;
                }
 
index f01c61d..28012c3 100644 (file)
@@ -432,6 +432,7 @@ modest_tny_folder_has_subfolder_with_name (TnyFolderStore *parent,
                folder = (TnyFolder*)tny_iterator_get_current (iter);
                if (!folder || ! TNY_IS_FOLDER(folder)) {
                        g_warning ("%s: invalid folder", __FUNCTION__);
                folder = (TnyFolder*)tny_iterator_get_current (iter);
                if (!folder || ! TNY_IS_FOLDER(folder)) {
                        g_warning ("%s: invalid folder", __FUNCTION__);
+                       tny_iterator_next (iter);
                        continue;
                }
                
                        continue;
                }
                
@@ -439,6 +440,7 @@ modest_tny_folder_has_subfolder_with_name (TnyFolderStore *parent,
                if (!name) {
                        g_warning ("%s: folder name == NULL", __FUNCTION__);
                        g_object_unref (folder);
                if (!name) {
                        g_warning ("%s: folder name == NULL", __FUNCTION__);
                        g_object_unref (folder);
+                       tny_iterator_next (iter);
                        continue;
                }
 
                        continue;
                }
 
index a249f7c..abdcf44 100644 (file)
@@ -488,6 +488,7 @@ modest_tny_msg_find_body_part_from_mime_part (TnyMimePart *msg, gboolean want_ht
 
                        if (!part) {
                                g_warning ("%s: not a valid mime part", __FUNCTION__);
 
                        if (!part) {
                                g_warning ("%s: not a valid mime part", __FUNCTION__);
+                               tny_iterator_next (iter);
                                continue;
                        }
 
                                continue;
                        }