evolution-data-server r8337 - trunk/camel



Author: sragavan
Date: Mon Jan  7 05:23:00 2008
New Revision: 8337
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=8337&view=rev

Log:
2008-01-07  Srinivasa Ragavan  <sragavan novell com>

	** Fix for bug #405497
	* camel-private.h:
	* camel-vee-folder.c: (folder_changed_base),
	(camel_vee_folder_finalise): Don't pass events if the object is being 
	destroyed.


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

Modified: trunk/camel/ChangeLog
==============================================================================
--- trunk/camel/ChangeLog	(original)
+++ trunk/camel/ChangeLog	Mon Jan  7 05:23:00 2008
@@ -1,3 +1,11 @@
+2008-01-07  Srinivasa Ragavan  <sragavan novell com>
+
+	** Fix for bug #405497
+	* camel-private.h:
+	* camel-vee-folder.c: (folder_changed_base),
+	(camel_vee_folder_finalise): Don't pass events if the object is being 
+	destroyed.
+
 2008-01-06  Bharath Acharya  <abharath novell com>
 
 	** Fix for bug #474118

Modified: trunk/camel/camel-private.h
==============================================================================
--- trunk/camel/camel-private.h	(original)
+++ trunk/camel/camel-private.h	Mon Jan  7 05:23:00 2008
@@ -149,6 +149,7 @@
 
 
 struct _CamelVeeFolderPrivate {
+	gboolean destroyed;
 	GList *folders;			/* lock using subfolder_lock before changing/accessing */
 	GList *folders_changed;		/* for list of folders that have changed between updates */
 

Modified: trunk/camel/camel-vee-folder.c
==============================================================================
--- trunk/camel/camel-vee-folder.c	(original)
+++ trunk/camel/camel-vee-folder.c	Mon Jan  7 05:23:00 2008
@@ -1446,9 +1446,13 @@
 static void
 folder_changed_base(CamelVeeFolder *vf, CamelFolder *sub, CamelFolderChangeInfo *changes)
 {
+	struct _CamelVeeFolderPrivate *p = _PRIVATE(vf);	
 	struct _folder_changed_msg *m;
 	CamelSession *session = ((CamelService *)((CamelFolder *)vf)->parent_store)->session;
 
+	if (p->destroyed)
+		return; 
+	
 	m = camel_session_thread_msg_new(session, &folder_changed_ops, sizeof(*m));
 	m->changes = camel_folder_change_info_new();
 	camel_folder_change_info_cat(m->changes, changes);
@@ -1691,7 +1695,7 @@
 	CamelFolder *folder = (CamelFolder *)obj;
 
 	p = _PRIVATE(obj) = g_malloc0(sizeof(*p));
-
+	
 	folder->folder_flags |= (CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY |
 				 CAMEL_FOLDER_HAS_SEARCH_CAPABILITY);
 
@@ -1717,6 +1721,8 @@
 	struct _CamelVeeFolderPrivate *p = _PRIVATE(vf);
 	CamelVeeFolder *folder_unmatched = vf->parent_vee_store ? vf->parent_vee_store->folder_unmatched : NULL;
 	GList *node;
+	
+	p->destroyed = TRUE;
 
 	/* TODO: there may be other leaks? */
 



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