[evolution-patches] GroupWise Calendar - Recurrence Creation



Hi,

The attached patch fixes a crash that happens when the server is not
responding properly during the creation of a recurrence appointment.
Fixes #312457

Please review.

Thanks,
Sankar
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/ChangeLog,v
retrieving revision 1.490
diff -u -p -r1.490 ChangeLog
--- ChangeLog	4 Aug 2005 16:42:14 -0000	1.490
+++ ChangeLog	9 Aug 2005 06:48:19 -0000
@@ -1,3 +1,10 @@
+2005-08-09  Sankar P  <psankar novell com>
+	
+	* backends/groupwise/e-cal-backend-groupwise.c:
+	(e_cal_backend_groupwise_create_object): Added check to handle
+	the scenario when the server doesnot return the proper list.
+	Fixes #312457
+	
 2005-08-04  Chenthill Palanisamy  <pchenthill novell com>
 
 	Fixes #305590
Index: backends/groupwise/e-cal-backend-groupwise.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.c,v
retrieving revision 1.159
diff -u -p -r1.159 e-cal-backend-groupwise.c
--- backends/groupwise/e-cal-backend-groupwise.c	25 Jul 2005 13:55:59 -0000	1.159
+++ backends/groupwise/e-cal-backend-groupwise.c	9 Aug 2005 06:48:19 -0000
@@ -1733,7 +1733,7 @@ e_cal_backend_groupwise_create_object (E
 			e_cal_backend_cache_put_component (priv->cache, comp);
 			*calobj = e_cal_component_get_as_string (comp);
 		} else {
-			
+			EGwConnectionStatus status;	
 			GList *list = NULL, *tmp;
 			GPtrArray *uid_array = g_ptr_array_new ();
 			for (l = uid_list; l; l = g_slist_next (l)) {
@@ -1741,12 +1741,14 @@ e_cal_backend_groupwise_create_object (E
 			}
 			
 			/* convert uid_list to GPtrArray and get the items in a list */
-			e_gw_connection_get_items_from_ids (priv->cnc,
+			status = e_gw_connection_get_items_from_ids (priv->cnc,
 					priv->container_id, 
 					"attachments recipients message recipientStatus default peek",
 					uid_array, &list);
-			/* FIXME  check if list is null and status may have
-			 * failed. */
+
+			if (status != E_GW_CONNECTION_STATUS_OK || (list == NULL) || (g_list_length (list) == 0))
+				return GNOME_Evolution_Calendar_OtherError;
+			
 			comp = g_object_ref ( (ECalComponent *) list->data );
 			/* convert items into components and add them to the cache */
 			for (i=0, tmp = list; tmp ; tmp = g_list_next (tmp), i++) {


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