diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libical/icalcomponent.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/libical/icalcomponent.c b/src/libical/icalcomponent.c index 757def20..5b0aef07 100644 --- a/src/libical/icalcomponent.c +++ b/src/libical/icalcomponent.c @@ -1005,7 +1005,6 @@ void icalcomponent_foreach_recurrence(icalcomponent* comp, time_t limit_start, limit_end; time_t dtduration; icalproperty *rrule, *rdate; - struct icaldurationtype dur; pvl_elem property_iterator; /* for saving the iterator */ if (comp == NULL || callback == NULL) @@ -1073,9 +1072,10 @@ void icalcomponent_foreach_recurrence(icalcomponent* comp, if (icaltime_compare(rrule_time, end) > 0) break; - dur = icaltime_subtract(rrule_time, dtstart); - - recurspan.start = basespan.start + icaldurationtype_as_int(dur); + recurspan.start = + icaltime_as_timet_with_zone(rrule_time, + rrule_time.zone ? rrule_time.zone : + icaltimezone_get_utc_timezone()); recurspan.end = recurspan.start + dtduration; /** save the iterator ICK! **/ @@ -1108,9 +1108,10 @@ void icalcomponent_foreach_recurrence(icalcomponent* comp, if (icaltime_is_null_time(rdate_period.time)) continue; - dur = icaltime_subtract(rdate_period.time, dtstart); - - recurspan.start = basespan.start + icaldurationtype_as_int(dur); + recurspan.start = + icaltime_as_timet_with_zone(rdate_period.time, + rdate_period.time.zone ? rdate_period.time.zone : + icaltimezone_get_utc_timezone()); recurspan.end = recurspan.start + dtduration; /** save the iterator ICK! **/ |