aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog6
-rw-r--r--calendar/gui/e-cal-model.c36
2 files changed, 26 insertions, 16 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index cf85dd6d48..d0de1012c2 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-08 Wang Xin <jedy.wang@sun.com>
+
+ Fixes #389961
+ * gui/e-cal-model.c:(e_cal_model_set_instance_times):
+ Check if the item is a event before processing the end time.
+
2006-12-04 Matthew Barnes <mbarnes@redhat.com>
Fixes bug #357970
diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c
index 6b47fb96e1..1963ee69c8 100644
--- a/calendar/gui/e-cal-model.c
+++ b/calendar/gui/e-cal-model.c
@@ -2101,26 +2101,30 @@ void
e_cal_model_set_instance_times (ECalModelComponent *comp_data, const icaltimezone *zone)
{
struct icaltimetype start_time, end_time;
+ icalcomponent_kind kind;
+ kind = icalcomponent_isa (comp_data->icalcomp);
start_time = icalcomponent_get_dtstart (comp_data->icalcomp);
end_time = icalcomponent_get_dtend (comp_data->icalcomp);
- if (icaltime_is_null_time (end_time)) {
- /* If end_time is null and it's an all day event,
- * just make start_time = end_time so that end_time
- * will be a valid date
- */
- end_time = start_time;
- icaltime_adjust (&end_time, 1, 0, 0, 0);
- icalcomponent_set_dtend (comp_data->icalcomp, end_time);
- } else if (start_time.is_date && end_time.is_date &&
- (icaltime_compare_date_only (start_time, end_time) == 0)) {
- /* If both DTSTART and DTEND are DATE values, and they are the
- same day, we add 1 day to DTEND. This means that most
- events created with the old Evolution behavior will still
- work OK. */
- icaltime_adjust (&end_time, 1, 0, 0, 0);
- icalcomponent_set_dtend (comp_data->icalcomp, end_time);
+ if (kind == ICAL_VEVENT_COMPONENT) {
+ if (start_time.is_date && icaltime_is_null_time (end_time)) {
+ /* If end_time is null and it's an all day event,
+ * just make start_time = end_time so that end_time
+ * will be a valid date
+ */
+ end_time = start_time;
+ icaltime_adjust (&end_time, 1, 0, 0, 0);
+ icalcomponent_set_dtend (comp_data->icalcomp, end_time);
+ } else if (start_time.is_date && end_time.is_date &&
+ (icaltime_compare_date_only (start_time, end_time) == 0)) {
+ /* If both DTSTART and DTEND are DATE values, and they are the
+ same day, we add 1 day to DTEND. This means that most
+ events created with the old Evolution behavior will still
+ work OK. */
+ icaltime_adjust (&end_time, 1, 0, 0, 0);
+ icalcomponent_set_dtend (comp_data->icalcomp, end_time);
+ }
}
if (start_time.zone)