0.9.0claws94
authorChristoph Hohmann <reboot@gmx.ch>
Thu, 10 Jul 2003 09:48:05 +0000 (09:48 +0000)
committerChristoph Hohmann <reboot@gmx.ch>
Thu, 10 Jul 2003 09:48:05 +0000 (09:48 +0000)
* src/folder.c
        correct check if folder supports removing when a message is
        moved. if not the message is only copied.

(closes Bug 132 crash on startup in newsgroups folders)

ChangeLog.claws
configure.ac
src/folder.c

index d52d1f9..3a7ed07 100644 (file)
@@ -1,3 +1,11 @@
+2003-07-10 [christoph] 0.9.0claws94
+
+       * src/folder.c
+               correct check if folder supports removing when a message is
+               moved. if not the message is only copied.
+
+       (closes Bug 132 crash on startup in newsgroups folders)
+
 2003-07-09 [alfons]    0.9.0claws93
 
        * configure.ac
index cc80d28..e6b3e65 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=claws93
+EXTRA_VERSION=claws94
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl set $target
index 88ec0de..644a090 100644 (file)
@@ -1876,12 +1876,15 @@ gint folder_item_move_msgs_with_dest(FolderItem *dest, GSList *msglist)
 }
 */
 
-
-
+/**
+ * Copy a list of messages to a new folder.
+ *
+ * \param dest Destination folder
+ * \param msglist List of messages
+ */
 gint folder_item_move_msgs_with_dest(FolderItem *dest, GSList *msglist)
 {
        Folder *folder;
-       FolderItem *item;
        GSList *newmsgnums = NULL;
        GSList *l, *l2;
        gint num, lastnum = -1;
@@ -1893,19 +1896,14 @@ gint folder_item_move_msgs_with_dest(FolderItem *dest, GSList *msglist)
        folder = dest->folder;
 
        g_return_val_if_fail(folder->klass->copy_msg != NULL, -1);
-       g_return_val_if_fail(folder->klass->remove_msg != NULL, -1);
 
        /* 
         * Copy messages to destination folder and 
         * store new message numbers in newmsgnums
         */
-       item = NULL;
        for (l = msglist ; l != NULL ; l = g_slist_next(l)) {
                MsgInfo * msginfo = (MsgInfo *) l->data;
 
-               if (!item && msginfo->folder != NULL)
-                       item = msginfo->folder;
-
                num = folder->klass->copy_msg(folder, dest, msginfo);
                newmsgnums = g_slist_append(newmsgnums, GINT_TO_POINTER(num));
        }
@@ -1964,11 +1962,12 @@ gint folder_item_move_msgs_with_dest(FolderItem *dest, GSList *msglist)
        l2 = newmsgnums;
        for (l = msglist; l != NULL; l = g_slist_next(l)) {
                MsgInfo *msginfo = (MsgInfo *) l->data;
+               FolderItem *item = msginfo->folder;
 
                num = GPOINTER_TO_INT(l2->data);
                l2 = g_slist_next(l2);
                
-               if (num >= 0) {
+               if ((num >= 0) && (item->folder->klass->remove_msg != NULL)) {
                        item->folder->klass->remove_msg(item->folder,
                                                        msginfo->folder,
                                                        msginfo->msgnum);