On Tue, 2011-02-22 at 11:30 +1300, Andrew McMillan wrote:
> [...]
> Hi Carlos,
>
> From RFC5545:
>
> The INTERVAL rule part contains a positive integer representing at
> which intervals the recurrence rule repeats. The default value is
> "1", meaning every second for a SECONDLY rule, every minute for a
> MINUTELY rule, every hour for an HOURLY rule, every day for a
> DAILY rule, every week for a WEEKLY rule, every month for a
> MONTHLY rule, and every year for a YEARLY rule. For example,
> within a DAILY rule, a value of "8" means every eight days.
>
> So yes: 0 is also invalid, as you would expect :-)
A very reasonable thing for the RFC to say :) This should probably be
done in libical, but within e-d-s it the following patch probably makes
more sense than the one I posted on the other thread ("Deal with
negative intervals")
[PATCH] ECalRecur: Convert negative intervals into the default (1)
Negative intervals have been spotted in the wild. An interval lower
than 1 doesn't make any sense, so if we see one, we replace it by the
default iCal interval of 1.
---
calendar/libecal/e-cal-recur.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/calendar/libecal/e-cal-recur.c b/calendar/libecal/e-cal-recur.c
index 3c30618..9eda66a 100644
--- a/calendar/libecal/e-cal-recur.c
+++ b/calendar/libecal/e-cal-recur.c
@@ -996,7 +996,8 @@ e_cal_recur_from_icalproperty (icalproperty *prop, gboolean exception,
ir = icalproperty_get_rrule (prop);
r->freq = ir.freq;
- r->interval = ir.interval;
+ /* Interval < 1 doesn't make sense, so use the default. */
+ r->interval = ir.interval < 1 ? 1 : ir.interval;
r->enddate = e_cal_recur_obtain_enddate (&ir, prop, zone, convert_end_date);
--
Carlos Martín Nieto http://www.cmartin.tk
"¿Cómo voy a decir bobadas si soy mudo?" -- CACHAI
Attachment:
signature.asc
Description: This is a digitally signed message part