evolution-jescs r250 - in trunk: . calendar lib



Author: jedywang
Date: Wed Feb 27 09:18:01 2008
New Revision: 250
URL: http://svn.gnome.org/viewvc/evolution-jescs?rev=250&view=rev

Log:
2008-02-27  Wang Xin  <jedy wang sun com>

	Free memory returned by icaltime_as_ical_string.
	More info, please refer to #516408.
	Bump to 2.21.91.



Modified:
   trunk/ChangeLog
   trunk/calendar/cal-backend-wcap-events.c
   trunk/calendar/cal-backend-wcap-tasks.c
   trunk/calendar/cal-backend-wcap.c
   trunk/calendar/cal-backend-wcap.h
   trunk/configure.in
   trunk/lib/sunone-connection.c
   trunk/lib/sunone-util.c

Modified: trunk/calendar/cal-backend-wcap-events.c
==============================================================================
--- trunk/calendar/cal-backend-wcap-events.c	(original)
+++ trunk/calendar/cal-backend-wcap-events.c	Wed Feb 27 09:18:01 2008
@@ -604,6 +604,7 @@
 	const char *unmangled_uid;
 	guint error_code;
 	char *calobj;
+	char *ridstr;
 	
 	d(printf("cal_backend_wcap_evnets_remove_object(%p, %s, %s)\n", backend, uid, rid));
 
@@ -627,11 +628,14 @@
 
 	sunone_util_unmangle_uid (comp);
 	e_cal_component_get_uid (comp, &unmangled_uid);
-	rid = cal_backend_wcap_get_rid_string (comp);
+	ridstr = cal_backend_wcap_get_rid_string (comp);
 	
-	error_code = sunone_connection_deleteevents_by_id (cal_backend_wcap_get_connection (wcap), cal_backend_wcap_get_calid (wcap),
-								  unmangled_uid, rid, 
-								  cal_backend_wcap_to_sunone_mod (mod, comp));
+	error_code = sunone_connection_deleteevents_by_id (
+			cal_backend_wcap_get_connection (wcap),
+			cal_backend_wcap_get_calid (wcap),
+			unmangled_uid, ridstr,
+			cal_backend_wcap_to_sunone_mod (mod, comp));
+	g_free (ridstr);
 
 	g_object_unref (G_OBJECT (comp));
 

Modified: trunk/calendar/cal-backend-wcap-tasks.c
==============================================================================
--- trunk/calendar/cal-backend-wcap-tasks.c	(original)
+++ trunk/calendar/cal-backend-wcap-tasks.c	Wed Feb 27 09:18:01 2008
@@ -278,6 +278,7 @@
 	ECalBackendSyncStatus status;
 	guint error_code;
 	char *calobj;
+	char *ridstr;
 	
 	d(printf("cal_backend_wcap_tasks_remove_object(%p, %s, %s)\n", backend, uid, rid));
 
@@ -299,11 +300,14 @@
 	e_cal_component_set_icalcomponent (comp, icalcomp);
 
 	e_cal_component_get_uid (comp, &uid);
-	rid = cal_backend_wcap_get_rid_string (comp);
+	ridstr = cal_backend_wcap_get_rid_string (comp);
 	
-	error_code = sunone_connection_deletetodos_by_id (cal_backend_wcap_get_connection (wcap), cal_backend_wcap_get_calid (wcap),
-							  uid, rid, 
-							  cal_backend_wcap_to_sunone_mod (mod, comp));
+	error_code = sunone_connection_deletetodos_by_id (
+			cal_backend_wcap_get_connection (wcap),
+			cal_backend_wcap_get_calid (wcap),
+			uid, ridstr, 
+			cal_backend_wcap_to_sunone_mod (mod, comp));
+	g_free (ridstr);
 
 
 	if (!SUNONE_ERROR_IS_SUCCESSFUL (error_code)) {

Modified: trunk/calendar/cal-backend-wcap.c
==============================================================================
--- trunk/calendar/cal-backend-wcap.c	(original)
+++ trunk/calendar/cal-backend-wcap.c	Wed Feb 27 09:18:01 2008
@@ -306,17 +306,23 @@
 				if (!start_equal (comp, existing, FALSE) ||
 						!end_equal (comp, existing, FALSE) ||
 						!rrules_equal (comp, existing)) {
+					char *rid;
+
+					rid = cal_backend_wcap_get_rid_string (existing);
 					/* Delete the old ones and let the server re-expand */
 					if (import_kind == ICAL_VEVENT_COMPONENT)
-						sunone_connection_deleteevents_by_id (cal_backend_wcap_get_connection (wcap),
-																cal_backend_wcap_get_calid (wcap),
-																uid, cal_backend_wcap_get_rid_string (existing),
-																cal_backend_wcap_to_sunone_mod (mod, existing));
+						sunone_connection_deleteevents_by_id (
+								cal_backend_wcap_get_connection (wcap),
+								cal_backend_wcap_get_calid (wcap),
+								uid, rid,
+								cal_backend_wcap_to_sunone_mod (mod, existing));
 					else if (import_kind == ICAL_VTODO_COMPONENT)
-						sunone_connection_deletetodos_by_id (cal_backend_wcap_get_connection (wcap),
-																cal_backend_wcap_get_calid (wcap),
-																uid, cal_backend_wcap_get_rid_string (existing),
-																cal_backend_wcap_to_sunone_mod (mod, existing));
+						sunone_connection_deletetodos_by_id (
+								cal_backend_wcap_get_connection (wcap),
+								cal_backend_wcap_get_calid (wcap),
+								uid, rid,
+								cal_backend_wcap_to_sunone_mod (mod, existing));
+					g_free (rid);
 
 					clone = icalcomponent_new_clone (import_comp);
 					prop = icalcomponent_get_first_property (clone, ICAL_RECURRENCEID_PROPERTY);
@@ -585,7 +591,7 @@
 	return REPLY;
 }
 
-const char *
+char *
 cal_backend_wcap_get_rid_string (ECalComponent *comp)
 {
 	ECalComponentRange range;
@@ -593,18 +599,30 @@
 	
 	e_cal_component_get_recurid (comp, &range);
 	if (!range.datetime.value)
-		return "0";
+		return g_strdup ("0");
 	tt = *range.datetime.value;
 	e_cal_component_free_range (&range);
 
-	return icaltime_is_valid_time (tt) && !icaltime_is_null_time (tt) ? 
-		(const char *)icaltime_as_ical_string (tt) : "0";
+	if (icaltime_is_valid_time (tt) && !icaltime_is_null_time (tt))
+		return icaltime_as_ical_string (tt);
+	else
+		return g_strdup ("0");
 }
 
 gint
 cal_backend_wcap_instance_list_compare (gconstpointer a, gconstpointer b)
 {
-	return strcmp (cal_backend_wcap_get_rid_string (E_CAL_COMPONENT (a)), cal_backend_wcap_get_rid_string (E_CAL_COMPONENT (b)));
+	gint ret;
+	char *astr;
+	char *bstr;
+
+	astr = cal_backend_wcap_get_rid_string (E_CAL_COMPONENT (a));
+	bstr = cal_backend_wcap_get_rid_string (E_CAL_COMPONENT (b));
+	ret = strcmp (astr, bstr);
+	g_free (astr);
+	g_free (bstr);
+
+	return ret;
 }
 
 static void
@@ -1048,7 +1066,7 @@
 		ECalComponent *comp = l->data;
 
 		g_ptr_array_index (vd->uids, i) = g_strdup (uid);
-		g_ptr_array_index (vd->rids, i) = g_strdup (cal_backend_wcap_get_rid_string (comp));
+		g_ptr_array_index (vd->rids, i) = cal_backend_wcap_get_rid_string (comp);
 	}	
 }
 

Modified: trunk/calendar/cal-backend-wcap.h
==============================================================================
--- trunk/calendar/cal-backend-wcap.h	(original)
+++ trunk/calendar/cal-backend-wcap.h	Wed Feb 27 09:18:01 2008
@@ -50,7 +50,7 @@
 gint				cal_backend_wcap_instance_list_compare (gconstpointer a, gconstpointer b);
 gboolean			cal_backend_wcap_poll_cb (gpointer data);
 gboolean			cal_backend_wcap_is_online (CalBackendWCAP *wcap);
-const char			*cal_backend_wcap_get_rid_string (ECalComponent *comp);
+char				*cal_backend_wcap_get_rid_string (ECalComponent *comp);
 const char			*cal_backend_wcap_get_uri (CalBackendWCAP *wcap);
 const char			*cal_backend_wcap_get_calid (CalBackendWCAP *wcap);
 const char			*cal_backend_wcap_get_alarm_email (CalBackendWCAP *wcap);

Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in	(original)
+++ trunk/configure.in	Wed Feb 27 09:18:01 2008
@@ -1,7 +1,7 @@
 # Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.52)
 
-AC_INIT(evolution-jescs, 2.21.90, http://bugzilla.gnome.org/enter_bug.cgi?product=evolution-jescs)
+AC_INIT(evolution-jescs, 2.21.91, http://bugzilla.gnome.org/enter_bug.cgi?product=evolution-jescs)
 AC_CONFIG_SRCDIR(README)
 AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
 

Modified: trunk/lib/sunone-connection.c
==============================================================================
--- trunk/lib/sunone-connection.c	(original)
+++ trunk/lib/sunone-connection.c	Wed Feb 27 09:18:01 2008
@@ -186,7 +186,7 @@
 static void
 append_to_query_datetime (SoupURI *uri, const char *param, ECalComponentDateTime *dt, gboolean zero)
 {
-	const char *string;
+	char *string;
 
 	if (!dt->value || !icaltime_is_valid_time (*dt->value)) {
 		if (zero) 
@@ -196,6 +196,7 @@
 	
 	string = icaltime_as_ical_string (*dt->value);
 	append_to_query (uri, param, string);	
+	g_free (string);
 	e_cal_component_free_datetime (dt);
 }
 
@@ -339,16 +340,19 @@
 	for (l = dt_list; l != NULL; l = l->next) {
 		ECalComponentDateTime *dt = l->data;
 		char *tmp = string;
+		char *tstr;
 		
 		if (!dt->value)
 			continue;
+		tstr = icaltime_as_ical_string (*dt->value);
 		
 		if (string) {
-			string = g_strconcat (string, ";", icaltime_as_ical_string (*dt->value), NULL);
+			string = g_strconcat (string, ";", tstr, NULL);
 			g_free (tmp);
 		} else {
-			string = g_strdup (icaltime_as_ical_string (*dt->value));
+			string = g_strdup (tstr);
 		}
+		g_free (tstr);
 	}
 	if (string)
 		append_to_query (uri, param, string);
@@ -490,7 +494,7 @@
 	ECalComponentAlarmAction action;
 	ECalComponentAlarmTrigger trigger;
 	char *atype;
-	const char *dtstring;
+	char *dtstring;
 
 	if (!e_cal_component_has_alarms (comp)) {
 		
@@ -529,7 +533,8 @@
 		if (trigger.type == E_CAL_COMPONENT_ALARM_TRIGGER_ABSOLUTE)
 			dtstring = icaltime_as_ical_string (trigger.u.abs_time);
 		else
-			dtstring = icaldurationtype_as_ical_string (trigger.u.rel_duration);
+			dtstring =
+				g_strdup (icaldurationtype_as_ical_string (trigger.u.rel_duration));
 		
 		if (atype != NULL && dtstring != NULL) {
 			ECalComponentText text;
@@ -569,6 +574,7 @@
 				}
 			}
 		}
+		g_free (dtstring);
 		
 		e_cal_component_alarm_free (alarm);
 	}
@@ -2124,6 +2130,8 @@
 	SoupURI *fetch_uri;
 	SoupMessage *msg;
 	guint retval;
+	char *tsstr;
+	char *testr;
 
 	g_return_val_if_fail (IS_SUNONE_CONNECTION (connection), SOUP_STATUS_CANCELLED);
 	g_return_val_if_fail (calid != NULL, SUNONE_ERROR_ILLEGAL_CALID_NAME);
@@ -2132,14 +2140,23 @@
 
 	/* prepare the URI */
 	NEW_URI (fetch_uri);
+	if (!icaltime_is_null_time (dtstart))
+		tsstr = icaltime_as_ical_string (dtstart);
+	else
+		tsstr = g_strdup ("0");
+	if (!icaltime_is_null_time (dtend))
+		testr = icaltime_as_ical_string (dtend);
+	else
+		testr = g_strdup ("0");
 	fetch_uri->path = g_strdup ("/fetchcomponents_by_lastmod.wcap");
 	fetch_uri->query = g_strdup_printf (
 		"id=%s&calid=%s&dtstart=%s&dtend=%s&component-type=%s&relativealarm=4&fmt-out=text/calendar&compressed=1",
 		priv->wcap_session_id,
 		calid,
-		!icaltime_is_null_time (dtstart) ? icaltime_as_ical_string (dtstart) : "0",
-		!icaltime_is_null_time (dtend) ? icaltime_as_ical_string (dtend) : "0",
+		tsstr, testr,
 		type_to_string (type));
+	g_free (tsstr);
+	g_free (testr);
 
 	append_to_query_compstate (fetch_uri, "compstate", state);
 	
@@ -2181,6 +2198,8 @@
 	SoupURI *fetch_uri;
 	SoupMessage *msg;
 	guint retval;
+	char *tsstr;
+	char *testr;
 
 	g_return_val_if_fail (IS_SUNONE_CONNECTION (connection), SOUP_STATUS_CANCELLED);
 	g_return_val_if_fail (calid != NULL, SUNONE_ERROR_ILLEGAL_CALID_NAME);
@@ -2189,14 +2208,23 @@
 
 	/* prepare the URI */
 	NEW_URI (fetch_uri);
+	if (!icaltime_is_null_time (dtstart))
+		tsstr = icaltime_as_ical_string (dtstart);
+	else
+		tsstr = g_strdup ("0");
+	if (!icaltime_is_null_time (dtend))
+		testr = icaltime_as_ical_string (dtend);
+	else
+		testr = g_strdup ("0");
 	fetch_uri->path = g_strdup ("/fetch_deletedcomponents.wcap");
 	fetch_uri->query = g_strdup_printf (
 		"id=%s&calid=%s&dtstart=%s&dtend=%s&component-type=%s&fmt-out=text/calendar&recurring=0",
 		priv->wcap_session_id,
 		calid,
-		!icaltime_is_null_time (dtstart) ? icaltime_as_ical_string (dtstart) : "0",
-		!icaltime_is_null_time (dtend) ? icaltime_as_ical_string (dtend) : "0",
+		tsstr, testr,
 		type_to_string (type));
+	g_free (tsstr);
+	g_free (testr);
 
 	
 	/* send the request to the server */
@@ -2227,19 +2255,30 @@
 	SoupURI *fetch_uri;
 	SoupMessage *msg;
 	guint retval;
+	char *tsstr;
+	char *testr;
 
 	g_return_val_if_fail (IS_SUNONE_CONNECTION (connection), SOUP_STATUS_CANCELLED);
 	g_return_val_if_fail (calid != NULL, SUNONE_ERROR_ILLEGAL_CALID_NAME);
 
 	/* prepare the URI */
 	NEW_URI (fetch_uri);
+	if (!icaltime_is_null_time (dtstart))
+		tsstr = icaltime_as_ical_string (dtstart);
+	else
+		tsstr = g_strdup ("0");
+	if (!icaltime_is_null_time (dtend))
+		testr = icaltime_as_ical_string (dtend);
+	else
+		testr = g_strdup ("0");
 	fetch_uri->path = g_strdup ("/get_freebusy.wcap");
 	fetch_uri->query = g_strdup_printf (
 		"id=%s&calid=%s&dtstart=%s&dtend=%s&tzid=UTC&tzidout=UTC&busyonly=1&fmt-out=text/calendar&compressed=1",
 		priv->wcap_session_id,
 		calid,
-		!icaltime_is_null_time (dtstart) ? icaltime_as_ical_string (dtstart) : "0",
-		!icaltime_is_null_time (dtend) ? icaltime_as_ical_string (dtend) : "0");
+		tsstr, testr);
+	g_free (tsstr);
+	g_free (testr);
 
 	/* send the request to the server */
 	msg = sunone_message_new_from_uri (fetch_uri, SOUP_METHOD_GET);
@@ -2257,16 +2296,27 @@
 
 	/* For WCAP 3.0, maybe calid is a mail address, try again */
 	if (!IS_CNC_WCAP_2_0(connection) && !SUNONE_ERROR_IS_SUCCESSFUL (msg->status_code)) {
+		char *tsstr;
+		char *testr;
 
 		/* prepare the URI */
 		NEW_URI (fetch_uri);
+		if (!icaltime_is_null_time (dtstart))
+			tsstr = icaltime_as_ical_string (dtstart);
+		else
+			tsstr = g_strdup ("0");
+		if (!icaltime_is_null_time (dtend))
+			testr = icaltime_as_ical_string (dtend);
+		else
+			testr = g_strdup ("0");
 		fetch_uri->path = g_strdup ("/get_freebusy.wcap");
 		fetch_uri->query = g_strdup_printf (
 			"id=%s&mail=%s&dtstart=%s&dtend=%s&tzid=UTC&tzidout=UTC&busyonly=1&fmt-out=text/calendar&compressed=1",
 			priv->wcap_session_id,
 			calid,
-			!icaltime_is_null_time (dtstart) ? icaltime_as_ical_string (dtstart) : "0",
-			!icaltime_is_null_time (dtend) ? icaltime_as_ical_string (dtend) : "0");
+			tsstr, testr);
+		g_free (tsstr);
+		g_free (testr);
 
 		/* send the request to the server */
 		msg = sunone_message_new_from_uri (fetch_uri, SOUP_METHOD_GET);
@@ -2632,6 +2682,7 @@
 	icalproperty_status status;
 	const char *const_string;
 	int *num;
+	char *tstr;
 	
 	g_return_val_if_fail (IS_SUNONE_CONNECTION (connection), SOUP_STATUS_CANCELLED);
 	g_return_val_if_fail (calid != NULL, SUNONE_ERROR_ILLEGAL_CALID_NAME);
@@ -2671,7 +2722,12 @@
 
 	/* Completed */
 	e_cal_component_get_completed (comp, &t);
-	append_to_query (fetch_uri, "completed", t ? icaltime_as_ical_string (*t) : "0");
+	if (t)
+		tstr = icaltime_as_ical_string (*t);
+	else
+		tstr = g_strdup ("0");
+	append_to_query (fetch_uri, "completed", tstr);
+	g_free (tstr);
 	
 	/* Description */
 	e_cal_component_get_description_list (comp, &slist);

Modified: trunk/lib/sunone-util.c
==============================================================================
--- trunk/lib/sunone-util.c	(original)
+++ trunk/lib/sunone-util.c	Wed Feb 27 09:18:01 2008
@@ -97,14 +97,17 @@
 	const char *uid;
 	ECalComponentRange rid;
 	char *new_uid;
+	char *tstr;
 	
 	e_cal_component_get_recurid (comp, &rid);	
 	if (!rid.datetime.value)
 		return;
+	tstr = icaltime_as_ical_string (*rid.datetime.value);
 	e_cal_component_get_uid (comp, &uid);
 
-	new_uid = g_strconcat (uid, icaltime_as_ical_string (*rid.datetime.value), NULL);
+	new_uid = g_strconcat (uid, tstr, NULL);
 	e_cal_component_set_uid (comp, new_uid);
+	g_free (tstr);
 	g_free (new_uid);
 
 	e_cal_component_free_range (&rid);
@@ -116,7 +119,7 @@
 	const char *uid;
 	ECalComponentRange rid;
 	char *new_uid;
-	const char *rid_string;
+	char *rid_string;
 	
 	e_cal_component_get_recurid (comp, &rid);	
 	if (!rid.datetime.value)
@@ -126,6 +129,7 @@
 	new_uid = g_strdup (uid);
 	rid_string = icaltime_as_ical_string (*rid.datetime.value);
 	new_uid[strlen (uid) - strlen (rid_string)] = '\0';	
+	g_free (rid_string);
 	e_cal_component_set_uid (comp, new_uid);
 	g_free (new_uid);
 



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