Index: calendar/gui/e-calendar-view.c
===================================================================
--- calendar/gui/e-calendar-view.c	(revision 35382)
+++ calendar/gui/e-calendar-view.c	(working copy)
@@ -364,12 +364,14 @@ e_calendar_view_add_event (ECalendarView
 
 	/* set the timezone properly */
 	e_cal_component_get_dtstart (comp, &dt);
+	g_free ((char *) dt.tzid);
 	dt.tzid = icaltimezone_get_tzid (default_zone);
 	e_cal_component_set_dtstart (comp, &dt);
 	dt.tzid = NULL;
 	e_cal_component_free_datetime (&dt);
 
 	e_cal_component_get_dtend (comp, &dt);
+	g_free ((char *) dt.tzid);
 	dt.tzid = icaltimezone_get_tzid (default_zone);
 	e_cal_component_set_dtend (comp, &dt);
 	dt.tzid = NULL;
Index: calendar/ChangeLog
===================================================================
--- calendar/ChangeLog	(revision 35382)
+++ calendar/ChangeLog	(working copy)
@@ -1,3 +1,11 @@
+2008-04-19  Milan Crha  <mcrha@redhat.com>
+
+	** Part of fix for bug #523402
+
+	* gui/e-calendar-view.c: (e_calendar_view_add_event): Do not leak.
+	* conduits/calendar/calendar-conduit.c: (process_multi_day):
+	Reassign back the old values before freeing.
+
 2008-04-18  Milan Crha  <mcrha@redhat.com>
 
 	** Fix for bug #509923
Index: calendar/conduits/calendar/calendar-conduit.c
===================================================================
--- calendar/conduits/calendar/calendar-conduit.c	(revision 35381)
+++ calendar/conduits/calendar/calendar-conduit.c	(working copy)
@@ -709,6 +709,8 @@ process_multi_day (ECalConduitContext *c
 			ret = FALSE;
 			g_free (new_uid);
 			g_object_unref (clone);
+			dt_start.value = old_start_value;
+			dt_end.value = old_end_value;
 			goto cleanup;
 		}
 
