[evolution-patches] Fix for "Not all deleted mails getting expunged"
- From: "Pasupathilingam Sankarasivasubramanian" <psankar novell com>
- To: <evolution-patches lists ximian com>
- Cc: "Susarla Parthasarathi" <SParthasarathi novell com>
- Subject: [evolution-patches] Fix for "Not all deleted mails getting expunged"
- Date: Wed, 30 Mar 2005 22:33:14 -0700
Hi,
The attached patch will fix the bug 74254. The bug is, when more than
one mails are deleted and expunged, not all the mails are getting
expunged.
groupwise_expunge function in camel-groupwise-folder is changed.
Regards,
Sankar P
? 74254.patch
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/ChangeLog,v
retrieving revision 1.42
diff -u -p -r1.42 ChangeLog
--- ChangeLog	21 Mar 2005 16:58:40 -0000	1.42
+++ ChangeLog	31 Mar 2005 05:26:19 -0000
@@ -1,3 +1,10 @@
+2005-03-31  Sankar P  <psankar novell com>
+
+	* camel-groupwise-folder.c: (groupwise_expunge)
+	Deferred removing a deleted item from the summary untill all items are deleted,
+	since instantaneous removal will alter the index of subsequent items in the summary
+	Fixes #74254
+
 2005-03-15  Chenthill Palanisamy  <pchenthill novell com>
 
 	Fixes #73421
Index: camel-groupwise-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/camel/providers/groupwise/camel-groupwise-folder.c,v
retrieving revision 1.43
diff -u -p -r1.43 camel-groupwise-folder.c
--- camel-groupwise-folder.c	21 Mar 2005 16:58:40 -0000	1.43
+++ camel-groupwise-folder.c	31 Mar 2005 05:26:20 -0000
@@ -1017,14 +1017,15 @@ groupwise_expunge (CamelFolder *folder, 
 	EGwConnectionStatus status ;
 	CamelFolderChangeInfo *changes ;
 	int i, max;
-	gboolean delete = FALSE ;
+	GSList *list;
+	list=NULL;
 	
 	CAMEL_SERVICE_LOCK (groupwise_store, connect_lock);
 	
 	changes = camel_folder_change_info_new () ;
 
 	cnc = cnc_lookup (priv) ;
-	
+
 	container_id =  g_strdup (camel_groupwise_store_container_id_lookup (groupwise_store, folder->name)) ;
 
 	max = camel_folder_summary_count (folder->summary);
@@ -1035,16 +1036,23 @@ groupwise_expunge (CamelFolder *folder, 
 			const char *uid = camel_message_info_uid (info) ;
 			status = e_gw_connection_remove_item (cnc, container_id, uid);
 			if (status == E_GW_CONNECTION_STATUS_OK) {
-				camel_folder_change_info_remove_uid (changes, (char *) uid);
-				camel_folder_summary_remove_uid (folder->summary, uid) ;
-				delete = TRUE ;
+				list=g_slist_append(list,(char *)uid);
 			}
 		}
 		camel_message_info_free (info);
 	}
 
-	if (delete)
-		camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes) ;
+	if (list) {
+		char *uid;
+		do {
+			uid=(char *)list->data;
+			camel_folder_change_info_remove_uid (changes, (char *) uid);
+			camel_folder_summary_remove_uid(folder->summary,uid);
+			list=g_slist_next(list);
+		} while (list);
+		g_slist_free(list);
+		camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes);
+	}
 	
 	CAMEL_SERVICE_UNLOCK (groupwise_store, connect_lock);
 	
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]