From: Murray Cumming Date: Mon, 23 Jul 2007 17:29:29 +0000 (+0000) Subject: 2007-07-23 Murray Cumming X-Git-Tag: git_migration_finished~2765 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=250e23c3f8c9b93a86641c4c8acecc1adb817e02 2007-07-23 Murray Cumming * src/dbus_api/modest-dbus-callbacks.c: (modest_dbus_req_handler), (add_folders_to_list), (on_dbus_method_get_folders), (modest_dbus_req_filter): * src/maemo/modest-maemo-utils.c: (on_camel_account_get_supported_secure_authentication): * src/maemo/modest-main-window.c: (modest_main_window_set_style), (on_header_view_focus_in): * src/modest-email-clipboard.c: (modest_email_clipboard_set_data): * src/modest-formatter.c: (modest_formatter_create_body_part): * src/modest-mail-operation.c: (recurse_folders), (update_account_thread), (get_msgs_full_thread), (modest_mail_operation_get_msgs_full), (modest_mail_operation_xfer_msgs): * src/modest-search.c: (search_mime_part_and_child_parts), (modest_search_account), (modest_search_all_accounts): * src/modest-tny-account.c: (modest_tny_account_get_special_folder), (recurse_folders): * src/modest-tny-local-folders-account.c: (modest_tny_local_folders_account_query_passes): * src/modest-tny-msg.c: (copy_mime_part), (modest_tny_msg_find_body_part_from_mime_part): * src/modest-tny-send-queue.c: (modest_tny_send_queue_cancel), (modest_tny_send_queue_try_to_send): * src/modest-ui-actions.c: (modest_ui_actions_on_delete_message), (_modest_ui_actions_open), (download_uncached_messages), (reply_forward), (modest_ui_actions_on_copy), (modest_ui_actions_on_details), (has_retrieved_msgs), (msgs_move_to_confirmation), (open_msg_for_purge_cb), (do_headers_action): * src/modest-ui-dimming-rules.c: (_already_opened_msg), (_selected_msg_marked_as), (_msg_download_completed), (_selected_msg_sent_in_progress): * src/widgets/modest-attachments-view.c: (modest_attachments_view_set_message): * src/widgets/modest-msg-view.c: (find_cid_image): * tests/check_folder-transfer.c: (find_folders): * tests/check_update-account.c: (func): * tests/dbus_api/test_get_folders.c: (main): Checked all uses of tny_iterator_get_current(), making sure that the object is unreferenced (3 or 4 places did not), and adding checks for NULL. pmo-trunk-r2776 --- diff --git a/ChangeLog2 b/ChangeLog2 index e2c3044..7926d61 100644 --- a/ChangeLog2 +++ b/ChangeLog2 @@ -1,5 +1,49 @@ 2007-07-23 Murray Cumming + * src/dbus_api/modest-dbus-callbacks.c: (modest_dbus_req_handler), + (add_folders_to_list), (on_dbus_method_get_folders), + (modest_dbus_req_filter): + * src/maemo/modest-maemo-utils.c: + (on_camel_account_get_supported_secure_authentication): + * src/maemo/modest-main-window.c: (modest_main_window_set_style), + (on_header_view_focus_in): + * src/modest-email-clipboard.c: (modest_email_clipboard_set_data): + * src/modest-formatter.c: (modest_formatter_create_body_part): + * src/modest-mail-operation.c: (recurse_folders), + (update_account_thread), (get_msgs_full_thread), + (modest_mail_operation_get_msgs_full), + (modest_mail_operation_xfer_msgs): + * src/modest-search.c: (search_mime_part_and_child_parts), + (modest_search_account), (modest_search_all_accounts): + * src/modest-tny-account.c: + (modest_tny_account_get_special_folder), (recurse_folders): + * src/modest-tny-local-folders-account.c: + (modest_tny_local_folders_account_query_passes): + * src/modest-tny-msg.c: (copy_mime_part), + (modest_tny_msg_find_body_part_from_mime_part): + * src/modest-tny-send-queue.c: (modest_tny_send_queue_cancel), + (modest_tny_send_queue_try_to_send): + * src/modest-ui-actions.c: (modest_ui_actions_on_delete_message), + (_modest_ui_actions_open), (download_uncached_messages), + (reply_forward), (modest_ui_actions_on_copy), + (modest_ui_actions_on_details), (has_retrieved_msgs), + (msgs_move_to_confirmation), (open_msg_for_purge_cb), + (do_headers_action): + * src/modest-ui-dimming-rules.c: (_already_opened_msg), + (_selected_msg_marked_as), (_msg_download_completed), + (_selected_msg_sent_in_progress): + * src/widgets/modest-attachments-view.c: + (modest_attachments_view_set_message): + * src/widgets/modest-msg-view.c: (find_cid_image): + * tests/check_folder-transfer.c: (find_folders): + * tests/check_update-account.c: (func): + * tests/dbus_api/test_get_folders.c: (main): + Checked all uses of tny_iterator_get_current(), making sure + that the object is unreferenced (3 or 4 places did not), + and adding checks for NULL. + +2007-07-23 Murray Cumming + * src/dbus_api/modest-dbus-callbacks.c: (on_idle_open_default_inbox): Make sure that the application UI is visible. diff --git a/src/dbus_api/modest-dbus-callbacks.c b/src/dbus_api/modest-dbus-callbacks.c index 295c359..ff8de9e 100644 --- a/src/dbus_api/modest-dbus-callbacks.c +++ b/src/dbus_api/modest-dbus-callbacks.c @@ -885,8 +885,6 @@ gint modest_dbus_req_handler(const gchar * interface, const gchar * method, return on_top_application (arguments, data, retval); } else { - g_debug (" debug: %s: Unexpected D-Bus method: %s\n", __FUNCTION__, method); - /* We need to return INVALID here so * libosso will return DBUS_HANDLER_RESULT_NOT_YET_HANDLED, * so that our modest_dbus_req_filter will then be tried instead. @@ -1243,15 +1241,20 @@ add_folders_to_list (TnyFolderStore *folder_store, GList** list) * be generally unsuitable for Modest. */ TnyFolder *folder = TNY_FOLDER (tny_iterator_get_current (iter)); - add_single_folder_to_list (TNY_FOLDER (folder), list); - - #if 0 - if (TNY_IS_FOLDER_STORE (folder)) - add_folders_to_list (TNY_FOLDER_STORE (folder), list); - else { + if (folder) { add_single_folder_to_list (TNY_FOLDER (folder), list); + + #if 0 + if (TNY_IS_FOLDER_STORE (folder)) + add_folders_to_list (TNY_FOLDER_STORE (folder), list); + else { + add_single_folder_to_list (TNY_FOLDER (folder), list); + } + #endif + + /* tny_iterator_get_current() gave us a reference. */ + g_object_unref (folder); } - #endif tny_iterator_next (iter); } @@ -1289,9 +1292,12 @@ on_dbus_method_get_folders (DBusConnection *con, DBusMessage *message) GList *folder_names = NULL; add_folders_to_list (TNY_FOLDER_STORE (account), &folder_names); + printf("DEBUGa0: %s\n", __FUNCTION__); + g_object_unref (account); account = NULL; + printf("DEBUGa1: %s\n", __FUNCTION__); /* Also add the folders from the local folders account, * because they are (currently) used with all accounts: @@ -1305,12 +1311,17 @@ on_dbus_method_get_folders (DBusConnection *con, DBusMessage *message) g_object_unref (account_local); account_local = NULL; + printf("DEBUGa2: %s\n", __FUNCTION__); + /* Put the result in a DBus reply: */ reply = dbus_message_new_method_return (message); get_folders_result_to_message (reply, folder_names); + printf("DEBUGa3: %s\n", __FUNCTION__); + + if (reply == NULL) { g_warning ("%s: Could not create reply.", __FUNCTION__); } @@ -1324,6 +1335,8 @@ on_dbus_method_get_folders (DBusConnection *con, DBusMessage *message) g_list_foreach (folder_names, (GFunc)g_free, NULL); g_list_free (folder_names); + + printf("DEBUGa4: %s\n", __FUNCTION__); } @@ -1337,19 +1350,25 @@ modest_dbus_req_filter (DBusConnection *con, DBusMessage *message, void *user_data) { + printf ("DEBUG: %s\n", __FUNCTION__); gboolean handled = FALSE; if (dbus_message_is_method_call (message, MODEST_DBUS_IFACE, MODEST_DBUS_METHOD_SEARCH)) { + printf (" DEBUG1: %s\n", __FUNCTION__); on_dbus_method_search (con, message); handled = TRUE; } else if (dbus_message_is_method_call (message, MODEST_DBUS_IFACE, MODEST_DBUS_METHOD_GET_FOLDERS)) { + printf (" DEBUG2: %s\n", __FUNCTION__); on_dbus_method_get_folders (con, message); handled = TRUE; } + else { + g_debug (" debug: %s: Unexpected D-Bus method\n", __FUNCTION__); + } return (handled ? DBUS_HANDLER_RESULT_HANDLED : diff --git a/src/maemo/modest-maemo-utils.c b/src/maemo/modest-maemo-utils.c index 5c36574..b48c804 100644 --- a/src/maemo/modest-maemo-utils.c +++ b/src/maemo/modest-maemo-utils.c @@ -329,7 +329,14 @@ on_camel_account_get_supported_secure_authentication ( GList *result = NULL; TnyIterator* iter = tny_list_create_iterator(auth_types); while (!tny_iterator_is_done(iter)) { - const gchar *auth_name = tny_pair_get_name(TNY_PAIR(tny_iterator_get_current(iter))); + TnyPair *pair = TNY_PAIR(tny_iterator_get_current(iter)); + const gchar *auth_name = NULL; + if (pair) { + auth_name = tny_pair_get_name(pair); + g_object_unref (pair); + pair = NULL; + } + printf("DEBUG: %s: auth_name=%s\n", __FUNCTION__, auth_name); ModestPair *matching = modest_pair_list_find_by_first_as_string (pairs, auth_name); diff --git a/src/maemo/modest-main-window.c b/src/maemo/modest-main-window.c index 599ebe7..2768c51 100644 --- a/src/maemo/modest-main-window.c +++ b/src/maemo/modest-main-window.c @@ -1047,7 +1047,10 @@ modest_main_window_set_style (ModestMainWindow *self, gtk_window_set_title (GTK_WINDOW(self), tny_header_get_subject (header)); else gtk_window_set_title (GTK_WINDOW (self), _("mail_va_no_subject")); - g_object_unref (header); + + if (header) + g_object_unref (header); + g_object_unref (iterator); g_object_unref (selection); } @@ -2225,7 +2228,9 @@ on_header_view_focus_in (GtkWidget *widget, else gtk_window_set_title (GTK_WINDOW (main_window), _("mail_va_no_subject")); - g_object_unref (header); + if (header) + g_object_unref (header); + g_object_unref (iterator); g_object_unref (selection); } diff --git a/src/modest-email-clipboard.c b/src/modest-email-clipboard.c index e4f2153..b91eea4 100644 --- a/src/modest-email-clipboard.c +++ b/src/modest-email-clipboard.c @@ -196,13 +196,14 @@ modest_email_clipboard_set_data (ModestEmailClipboard *self, i = 0; while (!tny_iterator_is_done (iter)) { obj = tny_iterator_get_current (iter); - if (TNY_IS_HEADER (obj)) + if (obj && TNY_IS_HEADER (obj)) id = g_strdup(tny_header_get_message_id (TNY_HEADER (obj))); priv->hidding[i++] = id; tny_iterator_next (iter); - g_object_unref (obj); + if (obj) + g_object_unref (obj); } g_object_unref (iter); } diff --git a/src/modest-formatter.c b/src/modest-formatter.c index 5a3ced8..c495310 100644 --- a/src/modest-formatter.c +++ b/src/modest-formatter.c @@ -399,11 +399,14 @@ modest_formatter_create_body_part (ModestFormatter *self, TnyMsg *msg) iter = tny_list_create_iterator (parts); while (!tny_iterator_is_done (iter)) { TnyMimePart *part = TNY_MIME_PART (tny_iterator_get_current (iter)); - if (!g_strcasecmp(tny_mime_part_get_content_type (part), "multipart/alternative")) { + if (part && !g_strcasecmp(tny_mime_part_get_content_type (part), "multipart/alternative")) { alternative_part = part; break; } - g_object_unref (part); + + if (part) + g_object_unref (part); + tny_iterator_next (iter); } result = tny_platform_factory_new_mime_part (fact); diff --git a/src/modest-mail-operation.c b/src/modest-mail-operation.c index 0d8447e..faec82a 100644 --- a/src/modest-mail-operation.c +++ b/src/modest-mail-operation.c @@ -999,10 +999,11 @@ recurse_folders (TnyFolderStore *store, TnyFolderStoreQuery *query, TnyList *all while (!tny_iterator_is_done (iter)) { TnyFolderStore *folder = (TnyFolderStore*) tny_iterator_get_current (iter); - - tny_list_prepend (all_folders, G_OBJECT (folder)); - recurse_folders (folder, query, all_folders); - g_object_unref (G_OBJECT (folder)); + if (folder) { + tny_list_prepend (all_folders, G_OBJECT (folder)); + recurse_folders (folder, query, all_folders); + g_object_unref (G_OBJECT (folder)); + } tny_iterator_next (iter); } @@ -1180,8 +1181,10 @@ update_account_thread (gpointer thr_user_data) iter = tny_list_create_iterator (all_folders); while (!tny_iterator_is_done (iter)) { TnyFolderStore *folder = TNY_FOLDER_STORE (tny_iterator_get_current (iter)); - - recurse_folders (folder, query, all_folders); + if (folder) { + recurse_folders (folder, query, all_folders); + g_object_unref (folder); + } tny_iterator_next (iter); } g_object_unref (G_OBJECT (iter)); @@ -1247,7 +1250,9 @@ update_account_thread (gpointer thr_user_data) g_object_unref (observer); observer = NULL; - g_object_unref (G_OBJECT (folder)); + if (folder) + g_object_unref (G_OBJECT (folder)); + if (priv->error) priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED; @@ -2224,7 +2229,10 @@ get_msgs_full_thread (gpointer thr_user_data) MODEST_MAIL_OPERATION_ERROR_ITEM_NOT_FOUND, "Error trying to get a message. No folder found for header"); } - g_object_unref (header); + + if (header) + g_object_unref (header); + tny_iterator_next (iter); } @@ -2269,10 +2277,16 @@ modest_mail_operation_get_msgs_full (ModestMailOperation *self, if (tny_list_get_length (header_list) >= 1) { iter = tny_list_create_iterator (header_list); header = TNY_HEADER (tny_iterator_get_current (iter)); - folder = tny_header_get_folder (header); - priv->account = modest_tny_folder_get_account (TNY_FOLDER(folder)); - g_object_unref (header); - g_object_unref (folder); + if (header) { + folder = tny_header_get_folder (header); + if (folder) { + priv->account = modest_tny_folder_get_account (TNY_FOLDER(folder)); + + g_object_unref (folder); + } + + g_object_unref (header); + } if (tny_list_get_length (header_list) == 1) { g_object_unref (iter); @@ -2296,9 +2310,12 @@ modest_mail_operation_get_msgs_full (ModestMailOperation *self, if (iter != NULL) { while (!tny_iterator_is_done (iter) && size_ok) { header = TNY_HEADER (tny_iterator_get_current (iter)); - if (tny_header_get_message_size (header) >= max_size) - size_ok = FALSE; - g_object_unref (header); + if (header) { + if (tny_header_get_message_size (header) >= max_size) + size_ok = FALSE; + g_object_unref (header); + } + tny_iterator_next (iter); } g_object_unref (iter); @@ -2468,12 +2485,12 @@ modest_mail_operation_xfer_msgs (ModestMailOperation *self, XferMsgsAsynUserCallback user_callback, gpointer user_data) { - ModestMailOperationPrivate *priv; - TnyIterator *iter; - TnyFolder *src_folder; - XFerMsgAsyncHelper *helper; - TnyHeader *header; - ModestTnyFolderRules rules; + ModestMailOperationPrivate *priv = NULL; + TnyIterator *iter = NULL; + TnyFolder *src_folder = NULL; + XFerMsgAsyncHelper *helper = NULL; + TnyHeader *header = NULL; + ModestTnyFolderRules rules = 0; const gchar *id1 = NULL; const gchar *id2 = NULL; gboolean same_folder = FALSE; @@ -2503,8 +2520,11 @@ modest_mail_operation_xfer_msgs (ModestMailOperation *self, /* Get source folder */ iter = tny_list_create_iterator (headers); header = TNY_HEADER (tny_iterator_get_current (iter)); - src_folder = tny_header_get_folder (header); - g_object_unref (header); + if (header) { + src_folder = tny_header_get_folder (header); + g_object_unref (header); + } + g_object_unref (iter); /* Check folder source and destination */ diff --git a/src/modest-search.c b/src/modest-search.c index 46d5c90..94a5c3e 100644 --- a/src/modest-search.c +++ b/src/modest-search.c @@ -356,10 +356,12 @@ static gboolean search_mime_part_and_child_parts (TnyMimePart *part, ModestSearc TnyIterator *piter = tny_list_create_iterator (child_parts); while (!found && !tny_iterator_is_done (piter)) { TnyMimePart *pcur = (TnyMimePart *) tny_iterator_get_current (piter); + if (pcur) { + found = search_mime_part_and_child_parts (pcur, search); - found = search_mime_part_and_child_parts (pcur, search); + g_object_unref (pcur); + } - g_object_unref (pcur); tny_iterator_next (piter); } @@ -524,24 +526,27 @@ modest_search_account (TnyAccount *account, ModestSearch *search) iter = tny_list_create_iterator (folders); while (!tny_iterator_is_done (iter)) { - TnyFolder *folder; - GList *res; + TnyFolder *folder = NULL; + GList *res = NULL; folder = TNY_FOLDER (tny_iterator_get_current (iter)); - /* g_debug ("DEBUG: %s: searching folder %s.", - __FUNCTION__, tny_folder_get_name (folder)); */ + if (folder) { + /* g_debug ("DEBUG: %s: searching folder %s.", + __FUNCTION__, tny_folder_get_name (folder)); */ - res = modest_search_folder (folder, search); + res = modest_search_folder (folder, search); - if (res != NULL) { - if (hits == NULL) { - hits = res; - } else { - hits = g_list_concat (hits, res); + if (res != NULL) { + if (hits == NULL) { + hits = res; + } else { + hits = g_list_concat (hits, res); + } } + + g_object_unref (folder); } - g_object_unref (folder); tny_iterator_next (iter); } @@ -571,26 +576,26 @@ modest_search_all_accounts (ModestSearch *search) iter = tny_list_create_iterator (accounts); while (!tny_iterator_is_done (iter)) { - TnyAccount *account; - GList *res; + TnyAccount *account = NULL; + GList *res = NULL; account = TNY_ACCOUNT (tny_iterator_get_current (iter)); - - - /* g_debug ("DEBUG: %s: Searching account %s", - __FUNCTION__, tny_account_get_name (account)); */ - res = modest_search_account (account, search); + if (account) { + /* g_debug ("DEBUG: %s: Searching account %s", + __FUNCTION__, tny_account_get_name (account)); */ + res = modest_search_account (account, search); - if (res != NULL) { - - if (hits == NULL) { - hits = res; - } else { - hits = g_list_concat (hits, res); + if (res != NULL) { + if (hits == NULL) { + hits = res; + } else { + hits = g_list_concat (hits, res); + } } - } - g_object_unref (account); + g_object_unref (account); + } + tny_iterator_next (iter); } diff --git a/src/modest-tny-account.c b/src/modest-tny-account.c index 3cd2d01..4bc365c 100644 --- a/src/modest-tny-account.c +++ b/src/modest-tny-account.c @@ -129,12 +129,15 @@ modest_tny_account_get_special_folder (TnyAccount *account, while (!tny_iterator_is_done (iter)) { TnyFolder *folder = TNY_FOLDER (tny_iterator_get_current (iter)); - if (modest_tny_folder_get_local_folder_type (folder) == special_type) { - special_folder = folder; - break; /* Leaving a ref for the special_folder return value. */ - } + if (folder) { + if (modest_tny_folder_get_local_folder_type (folder) == special_type) { + special_folder = folder; + break; /* Leaving a ref for the special_folder return value. */ + } - g_object_unref (G_OBJECT(folder)); + g_object_unref (G_OBJECT(folder)); + } + tny_iterator_next (iter); } @@ -812,17 +815,19 @@ recurse_folders (TnyFolderStore *store, TnyFolder *folder; folder = TNY_FOLDER (tny_iterator_get_current (iter)); + if (folder) { + if (helper->task == TASK_GET_ALL_COUNT) + helper->sum += tny_folder_get_all_count (folder); - if (helper->task == TASK_GET_ALL_COUNT) - helper->sum += tny_folder_get_all_count (folder); + if (helper->task == TASK_GET_LOCAL_SIZE) + helper->sum += tny_folder_get_local_size (folder); - if (helper->task == TASK_GET_LOCAL_SIZE) - helper->sum += tny_folder_get_local_size (folder); + if (TNY_IS_FOLDER_STORE (folder)) + recurse_folders (TNY_FOLDER_STORE (folder), query, helper); - if (TNY_IS_FOLDER_STORE (folder)) - recurse_folders (TNY_FOLDER_STORE (folder), query, helper); + g_object_unref (folder); + } - g_object_unref (folder); tny_iterator_next (iter); } g_object_unref (G_OBJECT (iter)); diff --git a/src/modest-tny-local-folders-account.c b/src/modest-tny-local-folders-account.c index 5ec6b52..093e156 100644 --- a/src/modest-tny-local-folders-account.c +++ b/src/modest-tny-local-folders-account.c @@ -162,26 +162,29 @@ modest_tny_local_folders_account_query_passes (TnyFolderStoreQuery *query, TnyFo while (!tny_iterator_is_done (iterator)) { TnyFolderStoreQueryItem *item = (TnyFolderStoreQueryItem*) tny_iterator_get_current (iterator); - TnyFolderStoreQueryOption options = tny_folder_store_query_item_get_options (item); - regex_t *regex = tny_folder_store_query_item_get_regex (item); + if (item) { + TnyFolderStoreQueryOption options = tny_folder_store_query_item_get_options (item); + regex_t *regex = tny_folder_store_query_item_get_regex (item); - if ((options & TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED) && - tny_folder_is_subscribed (folder)) - retval = TRUE; + if ((options & TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED) && + tny_folder_is_subscribed (folder)) + retval = TRUE; - if ((options & TNY_FOLDER_STORE_QUERY_OPTION_UNSUBSCRIBED) && - !(tny_folder_is_subscribed (folder))) - retval = TRUE; + if ((options & TNY_FOLDER_STORE_QUERY_OPTION_UNSUBSCRIBED) && + !(tny_folder_is_subscribed (folder))) + retval = TRUE; - if (regex && options & TNY_FOLDER_STORE_QUERY_OPTION_MATCH_ON_NAME) - if (regexec (regex, tny_folder_get_name (folder), 0, NULL, 0) == 0) - retval = TRUE; + if (regex && options & TNY_FOLDER_STORE_QUERY_OPTION_MATCH_ON_NAME) + if (regexec (regex, tny_folder_get_name (folder), 0, NULL, 0) == 0) + retval = TRUE; - if (regex && options & TNY_FOLDER_STORE_QUERY_OPTION_MATCH_ON_ID) - if (regexec (regex, tny_folder_get_id (folder), 0, NULL, 0) == 0) - retval = TRUE; + if (regex && options & TNY_FOLDER_STORE_QUERY_OPTION_MATCH_ON_ID) + if (regexec (regex, tny_folder_get_id (folder), 0, NULL, 0) == 0) + retval = TRUE; + + g_object_unref (G_OBJECT (item)); + } - g_object_unref (G_OBJECT (item)); tny_iterator_next (iterator); } diff --git a/src/modest-tny-msg.c b/src/modest-tny-msg.c index ea22661..a9b7cbf 100644 --- a/src/modest-tny-msg.c +++ b/src/modest-tny-msg.c @@ -242,9 +242,12 @@ copy_mime_part (TnyMimePart *part) iterator = tny_list_create_iterator (parts); while (!tny_iterator_is_done (iterator)) { TnyMimePart *subpart = TNY_MIME_PART (tny_iterator_get_current (iterator)); - TnyMimePart *subpart_copy = copy_mime_part (subpart); - tny_mime_part_add_part (result, subpart_copy); - g_object_unref (subpart); + if (subpart) { + TnyMimePart *subpart_copy = copy_mime_part (subpart); + tny_mime_part_add_part (result, subpart_copy); + g_object_unref (subpart); + } + tny_iterator_next (iterator); } g_object_unref (iterator); @@ -310,8 +313,8 @@ modest_tny_msg_find_body_part_from_mime_part (TnyMimePart *msg, gboolean want_ht { const gchar *mime_type = want_html ? "text/html" : "text/plain"; TnyMimePart *part = NULL; - TnyList *parts; - TnyIterator *iter; + TnyList *parts = NULL; + TnyIterator *iter = NULL; if (!msg) return NULL; @@ -329,7 +332,7 @@ modest_tny_msg_find_body_part_from_mime_part (TnyMimePart *msg, gboolean want_ht gchar *content_type = NULL; do { part = TNY_MIME_PART(tny_iterator_get_current (iter)); - if (TNY_IS_MSG (part)) { + if (part && TNY_IS_MSG (part)) { g_object_unref (part); tny_iterator_next (iter); continue; @@ -338,8 +341,10 @@ modest_tny_msg_find_body_part_from_mime_part (TnyMimePart *msg, gboolean want_ht /* we need to strdown the content type, because * tny_mime_part_has_content_type does not do it... */ - content_type = g_ascii_strdown - (tny_mime_part_get_content_type (part), -1); + if (part) { + content_type = g_ascii_strdown + (tny_mime_part_get_content_type (part), -1); + } if (g_str_has_prefix (content_type, mime_type) && !tny_mime_part_is_attachment (part)) @@ -350,6 +355,7 @@ modest_tny_msg_find_body_part_from_mime_part (TnyMimePart *msg, gboolean want_ht if (part) break; } + if (part) g_object_unref (G_OBJECT(part)); diff --git a/src/modest-tny-send-queue.c b/src/modest-tny-send-queue.c index 8f7e2ca..0db96a1 100644 --- a/src/modest-tny-send-queue.c +++ b/src/modest-tny-send-queue.c @@ -140,11 +140,13 @@ modest_tny_send_queue_cancel (TnySendQueue *self, gboolean remove, GError **err) if (err != NULL) goto frees; iter = tny_list_create_iterator (headers); while (!tny_iterator_is_done (iter)) { - header = TNY_HEADER (tny_iterator_get_current (iter)); - tny_header_unset_flags (header, TNY_HEADER_FLAG_PRIORITY); - tny_header_set_flags (header, TNY_HEADER_FLAG_SUSPENDED_PRIORITY); - tny_iterator_next (iter); - g_object_unref (header); + header = TNY_HEADER (tny_iterator_get_current (iter)); + if (header) { + tny_header_unset_flags (header, TNY_HEADER_FLAG_PRIORITY); + tny_header_set_flags (header, TNY_HEADER_FLAG_SUSPENDED_PRIORITY); + tny_iterator_next (iter); + g_object_unref (header); + } } g_queue_foreach (priv->queue, (GFunc)modest_tny_send_queue_info_free, NULL); @@ -419,10 +421,13 @@ modest_tny_send_queue_try_to_send (ModestTnySendQueue* self) if (err != NULL) goto frees; iter = tny_list_create_iterator (headers); while (!tny_iterator_is_done (iter)) { - header = TNY_HEADER (tny_iterator_get_current (iter)); - _add_message (self, header); + header = TNY_HEADER (tny_iterator_get_current (iter)); + if (header) { + _add_message (self, header); + g_object_unref (header); + } + tny_iterator_next (iter); - g_object_unref (header); } /* Flush send queue */ diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 879540d..67c0376 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -315,8 +315,11 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win) mgr = modest_runtime_get_window_mgr (); while (!tny_iterator_is_done (iter) && !found) { header = TNY_HEADER (tny_iterator_get_current (iter)); - found = modest_window_mgr_find_registered_header (mgr, header, NULL); - g_object_unref (header); + if (header) { + found = modest_window_mgr_find_registered_header (mgr, header, NULL); + g_object_unref (header); + } + tny_iterator_next (iter); } g_object_unref (iter); @@ -340,8 +343,11 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win) if (tny_list_get_length(header_list) == 1) { iter = tny_list_create_iterator (header_list); header = TNY_HEADER (tny_iterator_get_current (iter)); - desc = g_strdup_printf ("%s", tny_header_get_subject (header)); - g_object_unref (header); + if (header) { + desc = g_strdup_printf ("%s", tny_header_get_subject (header)); + g_object_unref (header); + } + g_object_unref (iter); } message = g_strdup_printf(ngettext("emev_nc_delete_message", "emev_nc_delete_messages", @@ -842,7 +848,7 @@ _modest_ui_actions_open (TnyList *headers, ModestWindow *win) ModestMailOperation *mail_op2 = NULL; TnyList *not_opened_headers = NULL; TnyList *not_opened_cached_headers = NULL; - TnyHeaderFlags flags; + TnyHeaderFlags flags = 0; /* Look if we already have a message view for each header. If true, then remove the header from the list of headers to @@ -853,12 +859,13 @@ _modest_ui_actions_open (TnyList *headers, ModestWindow *win) not_opened_cached_headers = tny_simple_list_new (); while (!tny_iterator_is_done (iter)) { - ModestWindow *window; - TnyHeader *header; - gboolean found; + ModestWindow *window = NULL; + TnyHeader *header = NULL; + gboolean found = FALSE; header = TNY_HEADER (tny_iterator_get_current (iter)); - flags = tny_header_get_flags (header); + if (header) + flags = tny_header_get_flags (header); window = NULL; found = modest_window_mgr_find_registered_header (mgr, header, &window); @@ -880,7 +887,10 @@ _modest_ui_actions_open (TnyList *headers, ModestWindow *win) else tny_list_append (not_opened_cached_headers, G_OBJECT (header)); } - g_object_unref (header); + + if (header) + g_object_unref (header); + tny_iterator_next (iter); } g_object_unref (iter); @@ -905,8 +915,10 @@ _modest_ui_actions_open (TnyList *headers, ModestWindow *win) TnyIterator *iter_not_opened = tny_list_create_iterator (not_opened_headers); while (!tny_iterator_is_done (iter_not_opened)) { TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter_not_opened)); - modest_window_mgr_register_header (mgr, header); - g_object_unref (header); + if (header) { + modest_window_mgr_register_header (mgr, header); + g_object_unref (header); + } tny_iterator_next (iter_not_opened); } @@ -916,8 +928,10 @@ _modest_ui_actions_open (TnyList *headers, ModestWindow *win) TnyIterator *iter_cached = tny_list_create_iterator (not_opened_cached_headers); while (!tny_iterator_is_done (iter_cached)) { TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter_cached)); - modest_window_mgr_register_header (mgr, header); - g_object_unref (header); + if (header) { + modest_window_mgr_register_header (mgr, header); + g_object_unref (header); + } tny_iterator_next (iter_cached); } @@ -941,8 +955,11 @@ _modest_ui_actions_open (TnyList *headers, ModestWindow *win) } else { TnyIterator *iter = tny_list_create_iterator (not_opened_headers); TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter)); - modest_mail_operation_get_msg (mail_op1, header, open_msg_cb, NULL); - g_object_unref (header); + if (header) { + modest_mail_operation_get_msg (mail_op1, header, open_msg_cb, NULL); + g_object_unref (header); + } + g_object_unref (iter); } } @@ -963,8 +980,11 @@ _modest_ui_actions_open (TnyList *headers, ModestWindow *win) } else { TnyIterator *iter = tny_list_create_iterator (not_opened_cached_headers); TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter)); - modest_mail_operation_get_msg (mail_op2, header, open_msg_cb, NULL); - g_object_unref (header); + if (header) { + modest_mail_operation_get_msg (mail_op2, header, open_msg_cb, NULL); + g_object_unref (header); + } + g_object_unref (iter); } } @@ -1132,13 +1152,16 @@ download_uncached_messages (TnyList *header_list, GtkWindow *win, TnyHeaderFlags flags; header = TNY_HEADER (tny_iterator_get_current (iter)); - flags = tny_header_get_flags (header); - /* TODO: is this the right flag?, it seems that some - headers that have been previously downloaded do not - come with it */ - if (! (flags & TNY_HEADER_FLAG_CACHED)) - uncached_messages ++; - g_object_unref (header); + if (header) { + flags = tny_header_get_flags (header); + /* TODO: is this the right flag?, it seems that some + headers that have been previously downloaded do not + come with it */ + if (! (flags & TNY_HEADER_FLAG_CACHED)) + uncached_messages ++; + g_object_unref (header); + } + tny_iterator_next (iter); } g_object_unref (iter); @@ -1252,17 +1275,21 @@ reply_forward (ReplyForwardAction action, ModestWindow *win) header = TNY_HEADER (tny_iterator_get_current (iter)); g_object_unref (iter); - modest_mail_operation_get_msg (mail_op, + if (header) { + modest_mail_operation_get_msg (mail_op, header, reply_forward_cb, rf_helper); -/* modest_mail_operation_get_msgs_full (mail_op, */ +/* modest_mail_operation_get_msgs_full (mail_op, */ /* header_list, */ /* reply_forward_cb, */ /* rf_helper, */ /* free_reply_forward_helper); */ + g_object_unref (header); + } + /* Clean */ g_object_unref(mail_op); } @@ -2692,15 +2719,20 @@ modest_ui_actions_on_copy (GtkAction *action, TnyList *header_list = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW (focused_widget)); TnyIterator *iter = tny_list_create_iterator (header_list); TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter)); - TnyFolder *folder = tny_header_get_folder (header); - TnyAccount *account = tny_folder_get_account (folder); - const gchar *proto_str = tny_account_get_proto (TNY_ACCOUNT (account)); - /* If it's POP then ask */ - gboolean ask = (modest_protocol_info_get_transport_store_protocol (proto_str) == - MODEST_PROTOCOL_STORE_POP) ? TRUE : FALSE; - g_object_unref (account); - g_object_unref (folder); - g_object_unref (header); + + gboolean ask = FALSE; + if (header) { + TnyFolder *folder = tny_header_get_folder (header); + TnyAccount *account = tny_folder_get_account (folder); + const gchar *proto_str = tny_account_get_proto (TNY_ACCOUNT (account)); + /* If it's POP then ask */ + ask = (modest_protocol_info_get_transport_store_protocol (proto_str) == + MODEST_PROTOCOL_STORE_POP) ? TRUE : FALSE; + g_object_unref (account); + g_object_unref (folder); + g_object_unref (header); + } + g_object_unref (iter); /* Check that the messages have been previously downloaded */ @@ -3055,8 +3087,10 @@ modest_ui_actions_on_details (GtkAction *action, iter = tny_list_create_iterator (headers_list); header = TNY_HEADER (tny_iterator_get_current (iter)); - headers_action_show_details (header, win, NULL); - g_object_unref (header); + if (header) { + headers_action_show_details (header, win, NULL); + g_object_unref (header); + } g_object_unref (iter); g_object_unref (headers_list); @@ -3257,12 +3291,16 @@ has_retrieved_msgs (TnyList *list) iter = tny_list_create_iterator (list); while (tny_iterator_is_done (iter) && !found) { TnyHeader *header; - TnyHeaderFlags flags; + TnyHeaderFlags flags = 0; header = TNY_HEADER (tny_iterator_get_current (iter)); - flags = tny_header_get_flags (header); - if (!(flags & TNY_HEADER_FLAG_PARTIAL)) - found = TRUE; + if (header) { + flags = tny_header_get_flags (header); + if (!(flags & TNY_HEADER_FLAG_PARTIAL)) + found = TRUE; + + g_object_unref (header); + } if (!found) tny_iterator_next (iter); @@ -3287,15 +3325,18 @@ msgs_move_to_confirmation (GtkWindow *win, /* If the destination is a local folder */ if (modest_tny_folder_is_local_folder (dest_folder)) { - TnyFolder *src_folder; - TnyIterator *iter; - TnyHeader *header; + TnyFolder *src_folder = NULL; + TnyIterator *iter = NULL; + TnyHeader *header = NULL; /* Get source folder */ iter = tny_list_create_iterator (headers); header = TNY_HEADER (tny_iterator_get_current (iter)); - src_folder = tny_header_get_folder (header); - g_object_unref (header); + if (header) { + src_folder = tny_header_get_folder (header); + g_object_unref (header); + } + g_object_unref (iter); /* if no src_folder, message may be an attahcment */ @@ -3316,8 +3357,10 @@ msgs_move_to_confirmation (GtkWindow *win, response = modest_platform_run_confirmation_dialog (GTK_WINDOW (win), (const gchar *) message); } + g_object_unref (src_folder); } + return response; } @@ -3410,12 +3453,16 @@ open_msg_for_purge_cb (ModestMailOperation *mail_op, while (!tny_iterator_is_done (iter)) { TnyMimePart *part; part = TNY_MIME_PART (tny_iterator_get_current (iter)); - if (tny_mime_part_is_attachment (part) || TNY_IS_MSG (part)) { + if (part && (tny_mime_part_is_attachment (part) || TNY_IS_MSG (part))) { if (tny_mime_part_is_purged (part)) some_purged = TRUE; else pending_purges++; } + + if (part) + g_object_unref (part); + tny_iterator_next (iter); } @@ -3430,8 +3477,12 @@ open_msg_for_purge_cb (ModestMailOperation *mail_op, TnyMimePart *part; part = TNY_MIME_PART (tny_iterator_get_current (iter)); - if (tny_mime_part_is_attachment (part) || TNY_IS_MSG (part)) + if (part && (tny_mime_part_is_attachment (part) || TNY_IS_MSG (part))) tny_mime_part_set_purged (part); + + if (part) + g_object_unref (part); + tny_iterator_next (iter); } @@ -3447,7 +3498,14 @@ open_msg_for_purge_cb (ModestMailOperation *mail_op, TnyMimePart *part; part = TNY_MIME_PART (tny_iterator_get_current (iter)); - g_object_unref (part); + if (part) { + /* One for the reference given by tny_iterator_get_current(): */ + g_object_unref (part); + + /* TODO: Is this meant to remove the attachment by doing another unref()? + * Otherwise, this seems useless. */ + } + tny_iterator_next (iter); } modest_window_mgr_unregister_header (mgr, header); @@ -3719,10 +3777,10 @@ do_headers_action (ModestWindow *win, HeadersFunc func, gpointer user_data) { - TnyList *headers_list; - TnyIterator *iter; - TnyHeader *header; - TnyFolder *folder; + TnyList *headers_list = NULL; + TnyIterator *iter = NULL; + TnyHeader *header = NULL; + TnyFolder *folder = NULL; /* Get headers */ headers_list = get_selected_headers (win); @@ -3732,8 +3790,10 @@ do_headers_action (ModestWindow *win, /* Get the folder */ iter = tny_list_create_iterator (headers_list); header = TNY_HEADER (tny_iterator_get_current (iter)); - folder = tny_header_get_folder (header); - g_object_unref (header); + if (header) { + folder = tny_header_get_folder (header); + g_object_unref (header); + } /* Call the function for each header */ while (!tny_iterator_is_done (iter)) { diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 6b6af4f..c09ba02 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -1671,9 +1671,12 @@ _already_opened_msg (ModestWindow *win, found = FALSE; while (!tny_iterator_is_done (iter)) { header = TNY_HEADER (tny_iterator_get_current (iter)); - found = modest_window_mgr_find_registered_header (mgr,header, NULL); + if (header) { + found = modest_window_mgr_find_registered_header (mgr,header, NULL); - g_object_unref (header); + g_object_unref (header); + } + tny_iterator_next (iter); if (found) @@ -1699,7 +1702,7 @@ _selected_msg_marked_as (ModestWindow *win, TnyList *selected_headers = NULL; TnyIterator *iter = NULL; TnyHeader *header = NULL; - TnyHeaderFlags flags; + TnyHeaderFlags flags = 0; gboolean result = FALSE; if (MODEST_IS_MAIN_WINDOW (win)) @@ -1727,14 +1730,16 @@ _selected_msg_marked_as (ModestWindow *win, iter = tny_list_create_iterator (selected_headers); while (!tny_iterator_is_done (iter) && !result) { header = TNY_HEADER (tny_iterator_get_current (iter)); + if (header) { + flags = tny_header_get_flags (header); + if (opposite) + result = (flags & mask) == 0; + else + result = (flags & mask) != 0; - flags = tny_header_get_flags (header); - if (opposite) - result = (flags & mask) == 0; - else - result = (flags & mask) != 0; + g_object_unref (header); + } - g_object_unref (header); tny_iterator_next (iter); } @@ -1766,7 +1771,7 @@ _msg_download_completed (ModestMainWindow *win) TnyList *selected_headers = NULL; TnyIterator *iter = NULL; TnyHeader *header = NULL; - TnyHeaderFlags flags; + TnyHeaderFlags flags = 0; gboolean result = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW (win), FALSE); @@ -1790,14 +1795,16 @@ _msg_download_completed (ModestMainWindow *win) iter = tny_list_create_iterator (selected_headers); while (!tny_iterator_is_done (iter) && result) { header = TNY_HEADER (tny_iterator_get_current (iter)); - - flags = tny_header_get_flags (header); - /* TODO: is this the right flag?, it seems that some - headers that have been previously downloaded do not - come with it */ - result = (flags & TNY_HEADER_FLAG_CACHED); + if (header) { + flags = tny_header_get_flags (header); + /* TODO: is this the right flag?, it seems that some + headers that have been previously downloaded do not + come with it */ + result = (flags & TNY_HEADER_FLAG_CACHED); + + g_object_unref (header); + } - g_object_unref (header); tny_iterator_next (iter); } @@ -1850,17 +1857,22 @@ _selected_msg_sent_in_progress (ModestWindow *win) if (!header_list) return FALSE; iter = tny_list_create_iterator (header_list); header = TNY_HEADER (tny_iterator_get_current (iter)); - - /* Get message id */ - id = g_strdup(tny_header_get_message_id (header)); + if (header) { + /* Get message id */ + id = g_strdup(tny_header_get_message_id (header)); + g_object_unref (header); + } } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) { /* Get message header */ header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW(win)); + if (header) { + /* Get message id */ + id = g_strdup(tny_header_get_message_id (header)); - /* Get message id */ - id = g_strdup(tny_header_get_message_id (header)); + g_object_unref (header); + } } /* Check if msg id is being processed inside send queue */ @@ -1868,7 +1880,6 @@ _selected_msg_sent_in_progress (ModestWindow *win) /* Free */ g_free(id); - g_object_unref (header); g_object_unref(header_list); g_object_unref(iter); diff --git a/src/widgets/modest-attachments-view.c b/src/widgets/modest-attachments-view.c index a54b259..c061ea6 100644 --- a/src/widgets/modest-attachments-view.c +++ b/src/widgets/modest-attachments-view.c @@ -133,10 +133,13 @@ modest_attachments_view_set_message (ModestAttachmentsView *attachments_view, Tn TnyMimePart *part; part = TNY_MIME_PART (tny_iterator_get_current (iter)); - if (tny_mime_part_is_attachment (part) || TNY_IS_MSG (part)) { + if (part && (tny_mime_part_is_attachment (part) || TNY_IS_MSG (part))) { modest_attachments_view_add_attachment (attachments_view, part); } - g_object_unref (part); + + if (part) + g_object_unref (part); + tny_iterator_next (iter); } diff --git a/src/widgets/modest-msg-view.c b/src/widgets/modest-msg-view.c index 373f75b..c3f5aff 100644 --- a/src/widgets/modest-msg-view.c +++ b/src/widgets/modest-msg-view.c @@ -1196,7 +1196,8 @@ find_cid_image (TnyMsg *msg, const gchar *cid) if (part_cid && strcmp (cid, part_cid) == 0) break; - g_object_unref (G_OBJECT(part)); + if (part) + g_object_unref (G_OBJECT(part)); part = NULL; tny_iterator_next (iter); diff --git a/tests/check_folder-transfer.c b/tests/check_folder-transfer.c index 7f1376d..f3af164 100644 --- a/tests/check_folder-transfer.c +++ b/tests/check_folder-transfer.c @@ -65,19 +65,21 @@ find_folders (TnyFolderStore *store, TnyFolderStoreQuery *query, while (!tny_iterator_is_done (iter) && (!*folder_src || !*folder_dst)) { TnyFolderStore *folder = (TnyFolderStore*) tny_iterator_get_current (iter); - const gchar *folder_name = NULL; + if (folder) { + const gchar *folder_name = NULL; - folder_name = tny_folder_get_name (TNY_FOLDER (folder)); + folder_name = tny_folder_get_name (TNY_FOLDER (folder)); - if (strcmp (folder_name, src_name) == 0) - *folder_src = g_object_ref (folder); + if (strcmp (folder_name, src_name) == 0) + *folder_src = g_object_ref (folder); - if (!strcmp (folder_name, dst_name)) - *folder_dst = g_object_ref (folder); + if (!strcmp (folder_name, dst_name)) + *folder_dst = g_object_ref (folder); - find_folders (folder, query, folder_src, folder_dst); + find_folders (folder, query, folder_src, folder_dst); - g_object_unref (G_OBJECT (folder)); + g_object_unref (G_OBJECT (folder)); + } tny_iterator_next (iter); } diff --git a/tests/check_update-account.c b/tests/check_update-account.c index 70191d0..3039e91 100644 --- a/tests/check_update-account.c +++ b/tests/check_update-account.c @@ -97,6 +97,9 @@ func (gpointer_data) modest_mail_operation_queue_add (queue, mail_op); g_object_unref (G_OBJECT (mail_op)); + + if (account) + g_object_unref (account); return FALSE; } diff --git a/tests/dbus_api/test_get_folders.c b/tests/dbus_api/test_get_folders.c index 9aef59c..fe90c9a 100644 --- a/tests/dbus_api/test_get_folders.c +++ b/tests/dbus_api/test_get_folders.c @@ -4,7 +4,6 @@ int main(int argc, char *argv[]) { - GSList *attachments = NULL; /* Initialize maemo application */ osso_context_t * osso_context = osso_initialize( "test_hello", "0.0.1", TRUE, NULL); @@ -18,8 +17,6 @@ int main(int argc, char *argv[]) /* Call the function in libmodest-dbus-client: */ - attachments = g_slist_append(attachments, "/usr/include/math.h,/usr/include/malloc.h"); - GList *list = NULL; const gboolean ret = libmodest_dbus_client_get_folders ( osso_context, &list);