evolution-data-server r9511 - trunk/camel



Author: sragavan
Date: Wed Sep 10 05:49:55 2008
New Revision: 9511
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9511&view=rev

Log:
2008-09-10  Srinivasa Ragavan  <sragavan novell com>

	* camel/camel-vee-folder.c: Fix vfolders while unloading unmatched
	search indexes.


Modified:
   trunk/camel/ChangeLog
   trunk/camel/camel-vee-folder.c

Modified: trunk/camel/camel-vee-folder.c
==============================================================================
--- trunk/camel/camel-vee-folder.c	(original)
+++ trunk/camel/camel-vee-folder.c	Wed Sep 10 05:49:55 2008
@@ -1560,8 +1560,22 @@
 
 	/* Change any newly changed */
 	if (always_changed) {
-		for (i=0;i<always_changed->len;i++)
-			folder_changed_change_uid(sub, always_changed->pdata[i], hash, vf);
+		GPtrArray *present = camel_folder_search_by_uids(sub, vf->expression, always_changed, NULL);
+		GHashTable *ht_present = g_hash_table_new (g_str_hash, g_str_equal);
+
+		for (i=0;present && i<present->len;i++) {
+			folder_changed_change_uid(sub, present->pdata[i], hash, vf);
+			g_hash_table_insert (ht_present, present->pdata[i], present->pdata[i]);
+		}
+		
+		for (i=0; i<always_changed->len; i++) {
+			if (!present || !g_hash_table_lookup(ht_present, always_changed->pdata[i])) {
+				folder_changed_remove_uid(sub, always_changed->pdata[i], hash, FALSE, vf);
+			}
+		}
+
+		camel_folder_search_free (sub, present);
+		g_hash_table_destroy (ht_present);
 		g_ptr_array_free(always_changed, TRUE);
 	}
 



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