summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAllen Winter <allen.winter@kdab.com>2022-10-06 15:17:04 -0400
committerAllen Winter <allen.winter@kdab.com>2022-10-06 15:17:04 -0400
commit6c0a830af64fb40d1db0f32135dc30c280af6cca (patch)
tree5fc7bcf5b70e9cf7d1dc36648277f427e97e5859 /src
parent537642936828ec21c1fb5543dfe85d9898ed9232 (diff)
parenta3757f078af3049bd6dbab377b13e7cecd08eb31 (diff)
downloadlibical-git-6c0a830af64fb40d1db0f32135dc30c280af6cca.tar.gz
Merge branch '3.0'
Diffstat (limited to 'src')
-rw-r--r--src/libical/icalcomponent.c5
-rw-r--r--src/libical/icalcomponent.h2
-rw-r--r--src/libical/icalderivedproperty.c.in3
-rw-r--r--src/libical/icalmime.c2
-rw-r--r--src/libical/icalparser.c2
-rw-r--r--src/libical/icalparser.h2
-rw-r--r--src/libical/icalrestriction.c.in6
-rw-r--r--src/libical/icalvalue.c6
-rw-r--r--src/libicalss/icalmessage.c2
-rw-r--r--src/libicalss/icalssyacc.c2
-rw-r--r--src/libicalss/icalssyacc.y2
-rw-r--r--src/test/regression-component.c28
-rw-r--r--src/test/regression.c48
-rw-r--r--src/test/testmime.c2
14 files changed, 61 insertions, 51 deletions
diff --git a/src/libical/icalcomponent.c b/src/libical/icalcomponent.c
index dffc9451..e137173f 100644
--- a/src/libical/icalcomponent.c
+++ b/src/libical/icalcomponent.c
@@ -105,10 +105,10 @@ icalcomponent *icalcomponent_new(icalcomponent_kind kind)
return icalcomponent_new_impl(kind);
}
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wvarargs"
icalcomponent *icalcomponent_vanew(icalcomponent_kind kind, ...)
{
+ /* See https://github.com/libical/libical/issues/585. Caller must pass NULL as final argument */
+
va_list args;
icalcomponent *impl = icalcomponent_new_impl(kind);
@@ -123,7 +123,6 @@ icalcomponent *icalcomponent_vanew(icalcomponent_kind kind, ...)
return impl;
}
-#pragma clang diagnostic pop
icalcomponent *icalcomponent_new_from_string(const char *str)
{
diff --git a/src/libical/icalcomponent.h b/src/libical/icalcomponent.h
index 69d6c72e..3774a253 100644
--- a/src/libical/icalcomponent.h
+++ b/src/libical/icalcomponent.h
@@ -48,6 +48,8 @@ LIBICAL_ICAL_EXPORT icalcomponent *icalcomponent_clone(const icalcomponent *comp
LIBICAL_ICAL_EXPORT icalcomponent *icalcomponent_new_from_string(const char *str);
/** @brief Constructor
+ *
+ * Make sure to pass NULL (not 0) as the final argument!
*/
LIBICAL_ICAL_EXPORT icalcomponent *icalcomponent_vanew(icalcomponent_kind kind, ...);
diff --git a/src/libical/icalderivedproperty.c.in b/src/libical/icalderivedproperty.c.in
index 62cbf6d1..4d02a511 100644
--- a/src/libical/icalderivedproperty.c.in
+++ b/src/libical/icalderivedproperty.c.in
@@ -58,10 +58,7 @@ struct icalproperty_enum_map
const char *str;
};
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wvarargs"
<insert_code_here>
-#pragma clang diagnostic pop
int icalproperty_kind_is_valid(const icalproperty_kind kind)
{
diff --git a/src/libical/icalmime.c b/src/libical/icalmime.c
index d1345e31..84359657 100644
--- a/src/libical/icalmime.c
+++ b/src/libical/icalmime.c
@@ -226,7 +226,7 @@ icalcomponent *icalmime_parse(char *(*get_string) (char *s, size_t size, void *d
errParam = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_MIMEPARSEERROR);
icalcomponent_add_property(
comp,
- icalproperty_vanew_xlicerror(temp, errParam, 0));
+ icalproperty_vanew_xlicerror(temp, errParam, (void *)0));
icalparameter_free(errParam);
}
diff --git a/src/libical/icalparser.c b/src/libical/icalparser.c
index ea192c38..8f8c7ea1 100644
--- a/src/libical/icalparser.c
+++ b/src/libical/icalparser.c
@@ -603,7 +603,7 @@ static void insert_error(icalparser *parser, icalcomponent *comp, const char *te
icalcomponent_add_property(
comp,
- icalproperty_vanew_xlicerror(temp, icalparameter_new_xlicerrortype(type), 0));
+ icalproperty_vanew_xlicerror(temp, icalparameter_new_xlicerrortype(type), (void *)0));
parser->error_count++;
}
diff --git a/src/libical/icalparser.h b/src/libical/icalparser.h
index e8dfb6a9..7d3c4dd5 100644
--- a/src/libical/icalparser.h
+++ b/src/libical/icalparser.h
@@ -269,7 +269,7 @@ LIBICAL_ICAL_EXPORT icalcomponent *icalparser_parse(icalparser *parser,
* @param data The pointer which will be passed to the line_gen_func as argument `d`
*
* If you use any of the icalparser_parser() or icalparser_get_line() functions,
- * the @a line_gen_func that they expect has a third `void* d` argument. This function
+ * the @a line_gen_func that they expect has a third `void *d` argument. This function
* sets what will be passed to your @a line_gen_function as such argument.
*/
LIBICAL_ICAL_EXPORT void icalparser_set_gen_data(icalparser *parser, void *data);
diff --git a/src/libical/icalrestriction.c.in b/src/libical/icalrestriction.c.in
index 600ad5fd..d1758d3b 100644
--- a/src/libical/icalrestriction.c.in
+++ b/src/libical/icalrestriction.c.in
@@ -270,7 +270,7 @@ static int _check_restriction(icalcomponent *comp,
"Expected %s instances of the %s and got %d",
kind, type, restr_string_map[restr], type, count);
errParam = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_INVALIDITIP);
- errProp = icalproperty_vanew_xlicerror(temp, errParam, 0);
+ errProp = icalproperty_vanew_xlicerror(temp, errParam, (void *)0);
icalcomponent_add_property(comp, errProp);
icalproperty_free(errProp);
}
@@ -284,7 +284,7 @@ static int _check_restriction(icalcomponent *comp,
icalparameter *errParam;
errParam = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_INVALIDITIP);
- errProp = icalproperty_vanew_xlicerror(funcr, errParam, 0);
+ errProp = icalproperty_vanew_xlicerror(funcr, errParam, (void *)0);
icalcomponent_add_property(comp, errProp);
icalproperty_free(errProp);
@@ -341,7 +341,7 @@ static int icalrestriction_check_component(icalproperty_method method,
icalparameter *errParam;
errParam = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_INVALIDITIP);
- errProp = icalproperty_vanew_xlicerror(errStr, errParam, 0);
+ errProp = icalproperty_vanew_xlicerror(errStr, errParam, (void *)0);
icalcomponent_add_property(comp, errProp);
icalproperty_free(errProp);
diff --git a/src/libical/icalvalue.c b/src/libical/icalvalue.c
index 911f68fc..9945f02f 100644
--- a/src/libical/icalvalue.c
+++ b/src/libical/icalvalue.c
@@ -482,7 +482,7 @@ static icalvalue *icalvalue_new_from_string_with_error(icalvalue_kind kind,
"Could not parse %s as a %s property",
str, icalvalue_kind_to_string(kind));
errParam = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_VALUEPARSEERROR);
- *error = icalproperty_vanew_xlicerror(temp, errParam, 0);
+ *error = icalproperty_vanew_xlicerror(temp, errParam, (void *)0);
icalparameter_free(errParam);
}
break;
@@ -619,7 +619,7 @@ static icalvalue *icalvalue_new_from_string_with_error(icalvalue_kind kind,
"Could not parse %s as a %s property",
str, icalvalue_kind_to_string(kind));
errParam = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_VALUEPARSEERROR);
- *error = icalproperty_vanew_xlicerror(temp, errParam, 0);
+ *error = icalproperty_vanew_xlicerror(temp, errParam, (void *)0);
icalparameter_free(errParam);
}
}
@@ -734,7 +734,7 @@ static icalvalue *icalvalue_new_from_string_with_error(icalvalue_kind kind,
snprintf(temp, TMP_BUF_SIZE, "Unknown type for \'%s\'", str);
errParam = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_VALUEPARSEERROR);
- *error = icalproperty_vanew_xlicerror(temp, errParam, 0);
+ *error = icalproperty_vanew_xlicerror(temp, errParam, (void *)0);
icalparameter_free(errParam);
}
diff --git a/src/libicalss/icalmessage.c b/src/libicalss/icalmessage.c
index 779d41d9..2a818f06 100644
--- a/src/libicalss/icalmessage.c
+++ b/src/libicalss/icalmessage.c
@@ -263,7 +263,7 @@ icalcomponent *icalmessage_new_delegate_request(icalcomponent *c,
delegateeParam = icalparameter_new_delegatedfrom(icalproperty_get_attendee(attendee));
icalcomponent_add_property(
inner,
- icalproperty_vanew_attendee(delegatee, delegateeParam, 0));
+ icalproperty_vanew_attendee(delegatee, delegateeParam, (void *)0));
icalparameter_free(delegateeParam);
return reply;
}
diff --git a/src/libicalss/icalssyacc.c b/src/libicalss/icalssyacc.c
index 495ebba0..29d7e6a3 100644
--- a/src/libicalss/icalssyacc.c
+++ b/src/libicalss/icalssyacc.c
@@ -1847,7 +1847,7 @@ static void ssyacc_add_from(struct icalgauge_impl* impl, char* str1)
assert(0);
}
- pvl_push(impl->from,(void*)ckind);
+ pvl_push(impl->from,(void *)ckind);
}
diff --git a/src/libicalss/icalssyacc.y b/src/libicalss/icalssyacc.y
index 9b79e6df..67ad6e56 100644
--- a/src/libicalss/icalssyacc.y
+++ b/src/libicalss/icalssyacc.y
@@ -232,7 +232,7 @@ static void ssyacc_add_from(struct icalgauge_impl* impl, char* str1)
assert(0);
}
- pvl_push(impl->from,(void*)ckind);
+ pvl_push(impl->from,(void *)ckind);
}
diff --git a/src/test/regression-component.c b/src/test/regression-component.c
index e5ce534b..0541a61b 100644
--- a/src/test/regression-component.c
+++ b/src/test/regression-component.c
@@ -273,11 +273,11 @@ void create_new_component_with_va_args()
(void *)0),
(void *)0);
- ok("creating a complex vcalendar", (calendar != NULL));
if (VERBOSE && calendar)
printf("%s\n", icalcomponent_as_ical_string(calendar));
icalcomponent_free(calendar);
+ ok("creating a complex vcalendar", (calendar != NULL));
}
static void print_span(int c, struct icaltime_span span)
@@ -327,19 +327,19 @@ void test_icalcomponent_get_span()
c = icalcomponent_vanew(
ICAL_VEVENT_COMPONENT,
icalproperty_vanew_dtstart(icaltime_from_timet_with_zone(tm1, 0, azone),
- icalparameter_new_tzid("America/Los_Angeles"), 0),
+ icalparameter_new_tzid("America/Los_Angeles"), (void *)0),
icalproperty_vanew_dtend(icaltime_from_timet_with_zone(tm2, 0, azone),
icalparameter_new_tzid("America/Los_Angeles"), 0),
(void *)0);
span = icalcomponent_get_span(c);
+ icalcomponent_free(c);
if (VERBOSE)
print_span(tnum++, span);
#if ADD_TESTS_BROKEN_BUILTIN_TZDATA
int_is("America/Los_Angeles", span.start, 973350000);
#endif
- icalcomponent_free(c);
/** test 2
* We specify times as floating, the returned span is in UTC
@@ -347,8 +347,8 @@ void test_icalcomponent_get_span()
*/
c = icalcomponent_vanew(
ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_dtstart(icaltime_from_timet_with_zone(tm1, 0, NULL), 0),
- icalproperty_vanew_dtend(icaltime_from_timet_with_zone(tm2, 0, NULL), 0),
+ icalproperty_vanew_dtstart(icaltime_from_timet_with_zone(tm1, 0, NULL), (void *)0),
+ icalproperty_vanew_dtend(icaltime_from_timet_with_zone(tm2, 0, NULL), (void *)0),
(void *)0);
span = icalcomponent_get_span(c);
@@ -366,19 +366,19 @@ void test_icalcomponent_get_span()
c = icalcomponent_vanew(
ICAL_VEVENT_COMPONENT,
icalproperty_vanew_dtstart(icaltime_from_timet_with_zone(tm1, 0, azone),
- icalparameter_new_tzid("America/New_York"), 0),
+ icalparameter_new_tzid("America/New_York"), (void *)0),
icalproperty_vanew_dtend(icaltime_from_timet_with_zone(tm2, 0, azone),
- icalparameter_new_tzid("America/New_York"), 0),
+ icalparameter_new_tzid("America/New_York"), (void *)0),
(void *)0);
span = icalcomponent_get_span(c);
+ icalcomponent_free(c);
if (VERBOSE)
print_span(tnum++, span);
#if ADD_TESTS_BROKEN_BUILTIN_TZDATA
int_is("America/New_York", span.start, 973360800);
#endif
- icalcomponent_free(c);
/** test 4
* We specify times in two different timezones, the returned span
@@ -389,19 +389,19 @@ void test_icalcomponent_get_span()
c = icalcomponent_vanew(
ICAL_VEVENT_COMPONENT,
icalproperty_vanew_dtstart(icaltime_from_timet_with_zone(tm1, 0, azone),
- icalparameter_new_tzid("America/New_York"), 0),
+ icalparameter_new_tzid("America/New_York"), (void *)0),
icalproperty_vanew_dtend(icaltime_from_timet_with_zone(tm2, 0, bzone),
- icalparameter_new_tzid("America/Los_Angeles"), 0),
- (void *)0);
+ icalparameter_new_tzid("America/Los_Angeles"), (void *)0),
+ (void *)0);
span = icalcomponent_get_span(c);
+ icalcomponent_free(c);
if (VERBOSE)
print_span(tnum++, span);
#if ADD_TESTS_BROKEN_BUILTIN_TZDATA
int_is("America/New_York", span.start, 973360800);
#endif
- icalcomponent_free(c);
/** test 5
* We specify start time in a timezone and a duration, the returned span
@@ -413,18 +413,18 @@ void test_icalcomponent_get_span()
c = icalcomponent_vanew(
ICAL_VEVENT_COMPONENT,
icalproperty_vanew_dtstart(icaltime_from_timet_with_zone(tm1, 0, azone),
- icalparameter_new_tzid("America/Los_Angeles"), 0),
+ icalparameter_new_tzid("America/Los_Angeles"), (void *)0),
icalproperty_new_duration(dur),
(void *)0);
span = icalcomponent_get_span(c);
+ icalcomponent_free(c);
if (VERBOSE)
print_span(tnum++, span);
#if ADD_TESTS_BROKEN_BUILTIN_TZDATA
int_is("America/Los_Angeles w/ duration", span.end, 973351800);
#endif
- icalcomponent_free(c);
icalerror_set_errors_are_fatal(0);
/** test 6
diff --git a/src/test/regression.c b/src/test/regression.c
index 67228d34..d00979c3 100644
--- a/src/test/regression.c
+++ b/src/test/regression.c
@@ -525,11 +525,10 @@ void test_components()
(void *)0),
icalproperty_vanew_xlicerror(
"This is only a test",
- icalparameter_new_xlicerrortype(
- ICAL_XLICERRORTYPE_COMPONENTPARSEERROR),
+ icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_COMPONENTPARSEERROR),
(void *)0),
- 0),
- 0);
+ (void *)0),
+ (void *)0);
if (VERBOSE)
printf("Original Component:\n%s\n\n", icalcomponent_as_ical_string(c));
@@ -542,7 +541,6 @@ void test_components()
printf("Child Component:\n%s\n\n", icalcomponent_as_ical_string(child));
str_is("test results of child component", icalcomponent_as_ical_string(child), good_child);
-
icalcomponent_free(c);
estate = icalerror_get_errors_are_fatal();
@@ -1148,12 +1146,9 @@ void test_restriction()
(void *)0);
valid = icalrestriction_check(comp);
-
- ok("icalrestriction_check() == 0", (valid == 0));
-
(void)icalcomponent_as_ical_string(comp);
-
icalcomponent_free(comp);
+ ok("icalrestriction_check() == 0", (valid == 0));
}
void test_calendar()
@@ -5070,9 +5065,9 @@ static void test_implicit_dtend_duration(void)
ICAL_VCALENDAR_COMPONENT,
icalcomponent_vanew(
ICAL_VEVENT_COMPONENT,
- icalproperty_vanew_dtstart(start1, 0),
- 0),
- 0);
+ icalproperty_vanew_dtstart(start1, (void *)0),
+ (void *)0),
+ (void *)0);
struct icaldurationtype d = icalcomponent_get_duration(c);
struct icaltimetype end = icalcomponent_get_dtend(c),
start = icaltime_from_string("20220108T101010Z");
@@ -5104,9 +5099,9 @@ static void test_implicit_dtend_duration(void)
ICAL_VCALENDAR_COMPONENT,
icalcomponent_vanew(
ICAL_VTODO_COMPONENT,
- icalproperty_vanew_dtstart(start1, 0),
- 0),
- 0);
+ icalproperty_vanew_dtstart(start1, (void *)0),
+ (void *)0),
+ (void *)0);
icalcomponent_set_due(c, icaltime_from_string("20220109"));
d = icalcomponent_get_duration(c);
end = icalcomponent_get_dtend(c);
@@ -5234,7 +5229,7 @@ static void test_remove_tzid_from_due(void)
static void test_comma_in_xproperty(void)
{
- icalproperty *due = icalproperty_vanew_due(icaltime_from_string("20220120T120000"), 0);
+ icalproperty *due = icalproperty_vanew_due(icaltime_from_string("20220120T120000"), (void *)0);
icalcomponent *c;
icalproperty_add_parameter(due, icalparameter_new_tzid("America/New_York"));
@@ -5253,8 +5248,8 @@ static void test_comma_in_xproperty(void)
icalcomponent_free(c);
}
-void test_icaltime_as_timet(void) {
-
+void test_icaltime_as_timet(void)
+{
ok("icaltime_from_string translates 19020101T000000Z to -2145916800", icaltime_as_timet(icaltime_from_string("19020101T000000Z")) == -2145916800);
ok("icaltime_from_string translates 19290519T000000Z to -1281916800", icaltime_as_timet(icaltime_from_string("19290519T000000Z")) == -1281916800);
ok("icaltime_from_string translates 19561004T000000Z to -417916800", icaltime_as_timet(icaltime_from_string("19561004T000000Z")) == -417916800);
@@ -5276,6 +5271,22 @@ void test_icaltime_as_timet(void) {
#endif
}
+void test_icalcomponent_with_lastmodified(void)
+{
+ /* for https://github.com/libical/libical/issues/585 */
+
+ icalcomponent *comp;
+ struct icaltimetype lm = icaltime_from_timet_with_zone(1661280150, 0, NULL);
+ comp = icalcomponent_vanew(ICAL_VCALENDAR_COMPONENT,
+ icalproperty_new_version("2.0"),
+ icalproperty_new_prodid("PROD-ABC"),
+ icalproperty_new_uid("1234abcd"),
+ icalproperty_new_lastmodified(lm),
+ icalproperty_new_name("name1"),
+ NULL); /* NOT 0! */
+ icalcomponent_free(comp);
+}
+
int main(int argc, char *argv[])
{
#if !defined(HAVE_UNISTD_H)
@@ -5438,6 +5449,7 @@ int main(int argc, char *argv[])
test_run("Test removing TZID from DUE with icalcomponent_set_due", test_remove_tzid_from_due, do_test, do_header);
test_run("Test geo precision", test_geo_props, do_test, do_header);
test_run("Test commas in x-property", test_comma_in_xproperty, do_test, do_header);
+ test_run("Test icalcomponent_vanew with lastmodified property", test_icalcomponent_with_lastmodified, do_test, do_header);
/** OPTIONAL TESTS go here... **/
diff --git a/src/test/testmime.c b/src/test/testmime.c
index df904868..2fd05cde 100644
--- a/src/test/testmime.c
+++ b/src/test/testmime.c
@@ -20,7 +20,7 @@
/*int sspm_parse_mime(struct sspm_part *parts,
size_t max_parts,
struct sspm_action_map *actions,
- char* (*get_string)(char *s, size_t size, void* data),
+ char* (*get_string)(char *s, size_t size, void *data),
void *get_string_data,
struct sspm_header *first_header
);