From 2df05fe169b3fbd7fe7781cb19b5b3962edb0abe Mon Sep 17 00:00:00 2001 From: Allen Winter Date: Mon, 1 Jun 2015 10:34:20 -0400 Subject: icalvcal - use the return value of rrule_parse_duration() in rule_prop() --- src/libicalvcal/icalvcal.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/libicalvcal/icalvcal.c b/src/libicalvcal/icalvcal.c index ca8e9ef9..325a6d50 100644 --- a/src/libicalvcal/icalvcal.c +++ b/src/libicalvcal/icalvcal.c @@ -1170,7 +1170,7 @@ static void *rule_prop(int icaltype, VObject *object, icalcomponent *comp, icalvcal_defaults *defaults) { icalproperty *prop = NULL; - char *s, *p, *error_message = NULL; + char *s, *p, *parsestat, *error_message; const char *property_name; int free_string; struct icalrecurrencetype recur; @@ -1185,47 +1185,50 @@ static void *rule_prop(int icaltype, VObject *object, icalcomponent *comp, icalrecurrencetype_clear(&recur); + error_message = NULL; + parsestat = NULL; if (*s == 'D') { /* The DAILY RRULE only has an interval and duration (COUNT/UNTIL). */ recur.freq = ICAL_DAILY_RECURRENCE; p = rrule_parse_interval(s + 1, &recur, &error_message); - rrule_parse_duration(p, &recur, &error_message); + parsestat = rrule_parse_duration(p, &recur, &error_message); } else if (*s == 'W') { /* The WEEKLY RRULE has weekday modifiers - MO TU WE. */ recur.freq = ICAL_WEEKLY_RECURRENCE; p = rrule_parse_interval(s + 1, &recur, &error_message); p = rrule_parse_weekly_days(p, &recur, &error_message); - rrule_parse_duration(p, &recur, &error_message); + parsestat = rrule_parse_duration(p, &recur, &error_message); } else if (*s == 'M' && *(s + 1) == 'D') { /* The MONTHLY By Day RRULE has day number modifiers - 1 1- LD. */ recur.freq = ICAL_MONTHLY_RECURRENCE; p = rrule_parse_interval(s + 2, &recur, &error_message); p = rrule_parse_monthly_days(p, &recur, &error_message); - rrule_parse_duration(p, &recur, &error_message); + parsestat = rrule_parse_duration(p, &recur, &error_message); } else if (*s == 'M' && *(s + 1) == 'P') { /* The MONTHLY By Position RRULE has position modifiers - 1 2- and weekday modifiers - MO TU. */ recur.freq = ICAL_MONTHLY_RECURRENCE; p = rrule_parse_interval(s + 2, &recur, &error_message); p = rrule_parse_monthly_positions(p, &recur, &error_message); - rrule_parse_duration(p, &recur, &error_message); + parsestat = rrule_parse_duration(p, &recur, &error_message); } else if (*s == 'Y' && *(s + 1) == 'M') { /* The YEARLY By Month RRULE has month modifiers - 1 3 12. */ recur.freq = ICAL_YEARLY_RECURRENCE; p = rrule_parse_interval(s + 2, &recur, &error_message); p = rrule_parse_yearly_months(p, &recur, &error_message); - rrule_parse_duration(p, &recur, &error_message); + parsestat = rrule_parse_duration(p, &recur, &error_message); } else if (*s == 'Y' && *(s + 1) == 'D') { /* The YEARLY By Day RRULE has day number modifiers - 100 200. */ recur.freq = ICAL_YEARLY_RECURRENCE; p = rrule_parse_interval(s + 2, &recur, &error_message); p = rrule_parse_yearly_days(p, &recur, &error_message); - rrule_parse_duration(p, &recur, &error_message); - } else { - error_message = "Invalid RRULE Frequency"; + parsestat = rrule_parse_duration(p, &recur, &error_message); } - if (error_message) { + if (!parsestat) { + if (!error_message) { + error_message = "Invalid RRULE Frequency"; + } prop = create_parse_error_property(error_message, property_name, s); } else { if (!strcmp(property_name, "RRULE")) { -- cgit v1.2.1