[evolution-patches] 54713



This should fix the crash, there are other issues I'm working on for the
B&A backend as well.

-JP
-- 
JP Rosevear <jpr ximian com>
Ximian, Inc.
? libecal/old.c
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/ChangeLog,v
retrieving revision 1.230
diff -u -r1.230 ChangeLog
--- ChangeLog	29 Mar 2004 14:47:25 -0000	1.230
+++ ChangeLog	30 Mar 2004 14:41:32 -0000
@@ -1,3 +1,12 @@
+2004-03-30  JP Rosevear <jpr ximian com>
+
+	Fixes #54713
+	
+	* libecal/e-cal.c (e_cal_get_object): only try to parse the string
+	if the status is good
+	(e_cal_get_timezone): ditto
+	(e_cal_get_default_object): ditto
+	
 2004-03-29 Harish K <kharish novell com>
 	* backends/groupwise/e-cal-backend-utils.c 
 	(start_freebusy_session) : send UTC time to server instead of
Index: libecal/e-cal.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/libecal/e-cal.c,v
retrieving revision 1.51
diff -u -r1.51 e-cal.c
--- libecal/e-cal.c	26 Mar 2004 15:44:13 -0000	1.51
+++ libecal/e-cal.c	30 Mar 2004 14:41:32 -0000
@@ -2299,10 +2299,13 @@
 	g_cond_wait (our_op->cond, our_op->mutex);
 
 	status = our_op->status;
-        if (status)
+        if (status) {
                 *icalcomp = NULL;
-        else
+        } else {
                 *icalcomp = icalparser_parse_string (our_op->string);
+		if (!(*icalcomp))
+			status = E_CALENDAR_STATUS_INVALID_OBJECT;
+	}
 	g_free (our_op->string);
 
 	e_calendar_remove_op (ecal, our_op);
@@ -2378,8 +2381,13 @@
 	g_cond_wait (our_op->cond, our_op->mutex);
 
 	status = our_op->status;
-	*icalcomp = icalparser_parse_string (our_op->string);
-	/* FIXME if the parse fails its an error */
+        if (status) {
+                *icalcomp = NULL;
+        } else {
+                *icalcomp = icalparser_parse_string (our_op->string);
+		if (!(*icalcomp))
+			status = E_CALENDAR_STATUS_INVALID_OBJECT;
+	}
 	g_free (our_op->string);
 
 	e_calendar_remove_op (ecal, our_op);
@@ -3640,18 +3648,22 @@
 	   successful response will notity us via our cv */
 	g_cond_wait (our_op->cond, our_op->mutex);
 
-	status = our_op->status;
-	
-	icalcomp = icalparser_parse_string (our_op->string);
+	status = our_op->status;	
+        if (status) {
+                icalcomp = NULL;
+        } else {
+                icalcomp = icalparser_parse_string (our_op->string);
+		if (!icalcomp)
+			status = E_CALENDAR_STATUS_INVALID_OBJECT;
+	}
 	g_free (our_op->string);
 	
-	/* FIXME Invalid object status? */
 	if (!icalcomp) {
 		e_calendar_remove_op (ecal, our_op);
 		g_mutex_unlock (our_op->mutex);
 		e_calendar_free_op (our_op);
 
-		E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OBJECT_NOT_FOUND, error);
+		E_CALENDAR_CHECK_STATUS (status, error);
 	}
 	
 	*zone = icaltimezone_new ();	


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