* Fixes NB#85194, do not crash when d&d quickly over the same message
authorSergio Villar Senin <svillar@igalia.com>
Mon, 18 Aug 2008 17:07:41 +0000 (17:07 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Mon, 18 Aug 2008 17:07:41 +0000 (17:07 +0000)
pmo-trunk-r5318

src/modest-ui-actions.c
src/widgets/modest-folder-view.c

index 523d55f..7b56161 100644 (file)
@@ -5385,6 +5385,10 @@ modest_ui_actions_transfer_messages_helper (GtkWindow *win,
        gboolean need_connection = TRUE;
        gboolean do_xfer = TRUE;
        XferMsgsHelper *helper;
        gboolean need_connection = TRUE;
        gboolean do_xfer = TRUE;
        XferMsgsHelper *helper;
+
+       g_return_if_fail (TNY_IS_FOLDER (src_folder));
+       g_return_if_fail (TNY_IS_FOLDER (dst_folder));
+       g_return_if_fail (TNY_IS_LIST (headers));
        
        modest_ui_actions_xfer_messages_check (win, TNY_FOLDER_STORE (src_folder), 
                                               headers, TNY_FOLDER (dst_folder),
        
        modest_ui_actions_xfer_messages_check (win, TNY_FOLDER_STORE (src_folder), 
                                               headers, TNY_FOLDER (dst_folder),
@@ -5443,6 +5447,7 @@ modest_ui_actions_on_msg_view_window_move_to (GtkAction *action,
                                                    TNY_FOLDER (dst_folder));
 
        /* Frees */
                                                    TNY_FOLDER (dst_folder));
 
        /* Frees */
+       g_object_unref (src_folder);
        g_object_unref (header);
        g_object_unref (headers);
 }
        g_object_unref (header);
        g_object_unref (headers);
 }
index 0bde50a..8e21f2f 100644 (file)
@@ -1817,6 +1817,12 @@ drag_and_drop_from_header_view (GtkTreeModel *source_model,
        }
        g_strfreev (uris);
 
        }
        g_strfreev (uris);
 
+       /* This could happen ig we perform a d&d very quickly over the
+          same row that row could dissapear because message is
+          transferred */
+       if (!TNY_IS_FOLDER (src_folder))
+               goto cleanup;
+
        /* Get the target folder */
        gtk_tree_model_get_iter (dest_model, &dest_iter, dest_row);
        gtk_tree_model_get (dest_model, &dest_iter,
        /* Get the target folder */
        gtk_tree_model_get_iter (dest_model, &dest_iter, dest_row);
        gtk_tree_model_get (dest_model, &dest_iter,