+2005-08-02 [colin] 1.9.13cvs5
+
+ * src/folder.c
+ * src/folderview.c
+ * src/imap.c
+ * src/main.c
+ * src/mbox.c
+ * src/procmsg.c
+ * src/summaryview.c
+ Fix a number of folder_item_get_msg_list()-related
+ leaks (missing procmsg_msginfo_free()s)
+
2005-08-01 [colin] 1.9.13cvs4
* src/folderview.c
( cvs diff -u -r 1.395.2.97 -r 1.395.2.98 src/summaryview.c; ) > 1.9.13cvs2.patchset
( cvs diff -u -r 1.115.2.45 -r 1.115.2.46 src/main.c; cvs diff -u -r 1.1.4.2 -r 1.1.4.3 src/etpan/etpan-thread-manager-types.h; ) > 1.9.13cvs3.patchset
( cvs diff -u -r 1.207.2.47 -r 1.207.2.48 src/folderview.c; cvs diff -u -r 1.20.2.4 -r 1.20.2.5 src/folderview.h; cvs diff -u -r 1.274.2.46 -r 1.274.2.47 src/mainwindow.c; cvs diff -u -r 1.4.2.10 -r 1.4.2.11 src/prefs_fonts.c; cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/prefs_summaries.c; cvs diff -u -r 1.3.2.21 -r 1.3.2.22 src/prefs_themes.c; cvs diff -u -r 1.395.2.98 -r 1.395.2.99 src/summaryview.c; cvs diff -u -r 1.68.2.9 -r 1.68.2.10 src/summaryview.h; cvs diff -u -r 1.96.2.65 -r 1.96.2.66 src/textview.c; cvs diff -u -r 1.12.2.6 -r 1.12.2.7 src/textview.h; ) > 1.9.13cvs4.patchset
+( cvs diff -u -r 1.213.2.43 -r 1.213.2.44 src/folder.c; cvs diff -u -r 1.207.2.48 -r 1.207.2.49 src/folderview.c; cvs diff -u -r 1.179.2.55 -r 1.179.2.56 src/imap.c; cvs diff -u -r 1.115.2.46 -r 1.115.2.47 src/main.c; cvs diff -u -r 1.28.2.5 -r 1.28.2.6 src/mbox.c; cvs diff -u -r 1.150.2.31 -r 1.150.2.32 src/procmsg.c; cvs diff -u -r 1.395.2.99 -r 1.395.2.100 src/summaryview.c; ) > 1.9.13cvs5.patchset
MICRO_VERSION=13
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=4
+EXTRA_VERSION=5
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
item->cache = NULL;
}
+void folder_clean_cache_memory_force(void)
+{
+ int old_cache_max_mem_usage = prefs_common.cache_max_mem_usage;
+ int old_cache_min_keep_time = prefs_common.cache_min_keep_time;
+
+ prefs_common.cache_max_mem_usage = 0;
+ prefs_common.cache_min_keep_time = 0;
+
+ folder_clean_cache_memory();
+
+ prefs_common.cache_max_mem_usage = old_cache_max_mem_usage;
+ prefs_common.cache_min_keep_time = old_cache_min_keep_time;
+}
+
void folder_clean_cache_memory(void)
{
gint memusage = 0;
GNode *srcnode;
gchar *old_id, *new_id;
- mlist = folder_item_get_msg_list(src);
-
/* move messages */
debug_print("Moving %s to %s\n", src->path, dest->path);
new_item = folder_create_folder(dest, src->name);
/* move messages */
log_message(_("Moving %s to %s...\n"),
src->name, new_item->path);
- if (mlist != NULL)
+
+ mlist = folder_item_get_msg_list(src);
+
+ if (mlist != NULL) {
folder_item_move_msgs(new_item, mlist);
+ procmsg_msg_list_free(mlist);
+ }
/*copy prefs*/
folder_item_prefs_copy_prefs(src, new_item);
if (srcnode && srcnode->data) {
next_item = (FolderItem*) srcnode->data;
srcnode = srcnode->next;
- if (folder_item_move_recursive(next_item, new_item) == NULL)
+ if (folder_item_move_recursive(next_item, new_item) == NULL) {
return NULL;
+ }
}
}
old_id = folder_item_get_identifier(src);
prefs_filtering_rename_path(old_id, new_id);
g_free(old_id);
g_free(new_id);
-
+
return new_item;
}
folderview->selected == folderview->opened);
SET_SENS("/Properties...", item->node->parent != NULL);
SET_SENS("/Processing...", item->node->parent != NULL);
- if (item == folder->trash)
- SET_SENS("/Empty trash...", folder_item_get_msg_list(item) != NULL);
+ if (item == folder->trash) {
+ GSList *msglist = folder_item_get_msg_list(item);
+ SET_SENS("/Empty trash...", msglist != NULL);
+ procmsg_msg_list_free(msglist);
+ }
#undef SET_SENS
popup = gtk_item_factory_get_widget(fpopup_factory, fpopup->path);
{
GSList *list = folder_item_get_msg_list(item);
gint res = imap_remove_msgs(folder, item, list, NULL);
- g_slist_free(list);
+ procmsg_msg_list_free(list);
return res;
}
if (!cmd.crash && is_file_exist(get_crashfile_name())) {
debug_print("Sylpheed crashed, checking for new messages in local folders\n");
folderview_check_new(NULL);
+ folder_clean_cache_memory_force();
}
/* make the crash-indicator file */
str_write_to_file("foo", get_crashfile_name());
export_list_to_mbox(mlist, mbox);
- g_slist_free(mlist);
+ procmsg_msg_list_free(mlist);
return 0;
}
procmsg_msginfo_free(msginfo);
}
-
+ g_slist_free(mlist);
folder_item_remove_all_msg(trash);
}
}
gboolean procmsg_queue_is_empty(FolderItem *queue)
{
GSList *list;
-
+ gboolean res = FALSE;
if (!queue)
queue = folder_get_default_queue();
g_return_val_if_fail(queue != NULL, TRUE);
folder_item_scan(queue);
list = folder_item_get_msg_list(queue);
- return (list == NULL);
+ res = (list == NULL);
+ procmsg_msg_list_free(list);
+ return res;
}
gint procmsg_remove_special_headers(const gchar *in, const gchar *out)
STATUSBAR_PUSH(summaryview->mainwin, buf);
g_free(buf);
-/*
- mlist = item->folder->get_msg_list(item->folder, item,
- TRUE);
-*/
mlist = folder_item_get_msg_list(item);
for(cur = mlist ; cur != NULL && cur->data != NULL ; cur = cur->next) {
MsgInfo * msginfo;