recur.zone = start.zone;
if (icaltime_compare_date_only (start, recur) == 0) {
+ icaltimetype end = icalcomponent_get_dtend (icalcomp);
ECalComponentDateTime m_sdate, m_endate;
e_cal_component_get_dtstart (obj_data->full_object, &m_sdate);
e_cal_component_get_dtend (obj_data->full_object, &m_endate);
- if (icaltime_compare (start, recur) != 0) {
- icaltimetype end = icalcomponent_get_dtend (icalcomp);
+ if (icaltime_compare (start, recur) != 0 ||
+ !m_endate.value ||
+ icaltime_compare (end, *(m_endate.value)) != 0) {
m_sdate.value->hour = start.hour;
m_sdate.value->minute = start.minute;
- m_sdate.value->second =
+ m_sdate.value->second = start.second;
+
+ if (!m_endate.value) {
+ /* create one if not exists and make same date
+ and time zone like start */
+ m_endate.value = g_new (struct icaltimetype, 1);
+ *m_endate.value = *m_sdate.value;
+
+ if (m_endate.tzid)
+ g_free ((char*)m_endate.tzid);
+
+ m_endate.tzid = g_strdup (m_sdate.tzid);
+ }
m_endate.value->hour = end.hour;
m_endate.value->minute = end.minute;
e_cal_component_set_dtend (comp, &m_endate);
e_cal_component_set_recurid (comp, NULL);
e_cal_component_commit_sequence (comp);
+
+ e_cal_component_free_datetime (&m_sdate);
+ e_cal_component_free_datetime (&m_endate);
}
e_cal_component_set_recurid (comp, NULL);
*new_object = e_cal_component_get_as_string (comp);