( cvs diff -u -r 1.5.2.10 -r 1.5.2.11 src/common/prefs.c; cvs diff -u -r 1.1.4.8 -r 1.1.4.9 src/common/xmlprops.c; ) > 3.3.1cvs44.patchset
( cvs diff -u -r 1.105.2.129 -r 1.105.2.130 src/prefs_account.c; cvs diff -u -r 1.204.2.162 -r 1.204.2.163 src/prefs_common.c; cvs diff -u -r 1.52.2.61 -r 1.52.2.62 src/prefs_folder_item.c; cvs diff -u -r 1.1.2.28 -r 1.1.2.29 src/prefs_quote.c; cvs diff -u -r 1.8.2.32 -r 1.8.2.33 src/quote_fmt.c; cvs diff -u -r 1.5.12.17 -r 1.5.12.18 src/quote_fmt.h; ) > 3.3.1cvs45.patchset
( cvs diff -u -r 1.274.2.238 -r 1.274.2.239 src/mainwindow.c; ) > 3.3.1cvs46.patchset
+( cvs diff -u -r 1.213.2.179 -r 1.213.2.180 src/folder.c; ) > 3.3.1cvs47.patchset
{
Folder *folder;
gint ret = 0;
+ GSList *real_list = NULL, *cur = NULL;
g_return_val_if_fail(item != NULL, -1);
folder = item->folder;
if (!item->cache) folder_item_read_cache(item);
folder_item_update_freeze();
+
+ /* filter out locked mails */
+ for (cur = msglist; cur; cur = cur->next) {
+ MsgInfo *info = (MsgInfo *)cur->data;
+ if (!MSG_IS_LOCKED(info->flags))
+ real_list = g_slist_prepend(real_list, info);
+ }
+
+ real_list = g_slist_reverse(real_list);
+
if (item->folder->klass->remove_msgs) {
ret = item->folder->klass->remove_msgs(item->folder,
item,
- msglist,
+ real_list,
NULL);
}
- while (ret == 0 && msglist != NULL) {
- MsgInfo *msginfo = (MsgInfo *)msglist->data;
+ while (ret == 0 && real_list != NULL) {
+ MsgInfo *msginfo = (MsgInfo *)real_list->data;
if (msginfo && MSG_IS_LOCKED(msginfo->flags)) {
- msglist = msglist->next;
+ real_list = real_list->next;
continue;
}
if (!item->folder->klass->remove_msgs)
ret = folder_item_remove_msg(item, msginfo->msgnum);
if (ret != 0) break;
msgcache_remove_msg(item->cache, msginfo->msgnum);
- msglist = msglist->next;
+ real_list = real_list->next;
}
+ g_slist_free(real_list);
folder_item_scan_full(item, FALSE);
folder_item_update_thaw();
inc_unlock();