[evolution-data-server] Bug #639201 - Crash on startup - pop3_get_message, camel_pop3_delete_old



commit a3a146f93949ff0e4dd8d08378e719e2bf9b9187
Author: Milan Crha <mcrha redhat com>
Date:   Tue Feb 22 09:09:05 2011 +0100

    Bug #639201 - Crash on startup - pop3_get_message, camel_pop3_delete_old

 camel/providers/pop3/camel-pop3-folder.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)
---
diff --git a/camel/providers/pop3/camel-pop3-folder.c b/camel/providers/pop3/camel-pop3-folder.c
index a3459e9..991eff8 100644
--- a/camel/providers/pop3/camel-pop3-folder.c
+++ b/camel/providers/pop3/camel-pop3-folder.c
@@ -321,6 +321,8 @@ pop3_folder_get_message_sync (CamelFolder *folder,
 	gint i, last;
 	CamelStream *stream = NULL;
 
+	g_return_val_if_fail (uid != NULL, NULL);
+
 	parent_store = camel_folder_get_parent_store (folder);
 
 	pop3_folder = CAMEL_POP3_FOLDER (folder);
@@ -736,6 +738,19 @@ camel_pop3_delete_old (CamelFolder *folder,
 		message_time = 0;
 		fi = pop3_folder->uids->pdata[i];
 
+		if (fi->cmd) {
+			while (camel_pop3_engine_iterate (pop3_store->engine, fi->cmd) > 0) {
+				; /* do nothing - iterating until end */
+			}
+
+			camel_pop3_engine_command_free (pop3_store->engine, fi->cmd);
+			fi->cmd = NULL;
+		}
+
+		/* continue, if message wasn't received yet */
+		if (!fi->uid)
+			continue;
+
 		d(printf("%s(%d): fi->uid=[%s]\n", __FILE__, __LINE__, fi->uid));
 		if (!pop3_get_message_time_from_cache (folder, fi->uid, &message_time)) {
 			d(printf("could not get message time from cache, trying from pop3\n"));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]