[evolution-patches] Fix for "Not all deleted mails getting expunged"



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]