Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libical for openSUSE:Factory checked 
in at 2022-04-02 18:20:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libical (Old)
 and      /work/SRC/openSUSE:Factory/.libical.new.1900 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libical"

Sat Apr  2 18:20:28 2022 rev:56 rq:965669 version:3.0.14

Changes:
--------
--- /work/SRC/openSUSE:Factory/libical/libical.changes  2022-01-29 
21:01:32.862889584 +0100
+++ /work/SRC/openSUSE:Factory/.libical.new.1900/libical.changes        
2022-04-02 18:20:39.678193776 +0200
@@ -1,0 +2,7 @@
+Sun Mar 20 21:21:57 UTC 2022 - Dirk M??ller <dmuel...@suse.com>
+
+- update to 3.0.14:
+  * icalvalue: Reset non-UTC icaltimetype::zone on set
+  * Fix icalcomponent_set_due not removing TZID when necessary
+
+-------------------------------------------------------------------

Old:
----
  libical-3.0.13.tar.gz

New:
----
  libical-3.0.14.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libical.spec ++++++
--- /var/tmp/diff_new_pack.CWsgDr/_old  2022-04-02 18:20:40.298186817 +0200
+++ /var/tmp/diff_new_pack.CWsgDr/_new  2022-04-02 18:20:40.306186728 +0200
@@ -26,7 +26,7 @@
 %bcond_with glib
 %endif
 Name:           libical%{name_ext}
-Version:        3.0.13
+Version:        3.0.14
 Release:        0
 URL:            https://github.com/libical/libical
 Source:         %{url}/releases/download/v%{version}/libical-%{version}.tar.gz

++++++ libical-3.0.13.tar.gz -> libical-3.0.14.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libical-3.0.13/CMakeLists.txt 
new/libical-3.0.14/CMakeLists.txt
--- old/libical-3.0.13/CMakeLists.txt   2022-01-17 16:19:56.000000000 +0100
+++ new/libical-3.0.14/CMakeLists.txt   2022-02-05 15:02:47.000000000 +0100
@@ -112,7 +112,7 @@
 
 set(LIBICAL_LIB_MAJOR_VERSION "3")
 set(LIBICAL_LIB_MINOR_VERSION "0")
-set(LIBICAL_LIB_PATCH_VERSION "13")
+set(LIBICAL_LIB_PATCH_VERSION "14")
 set(LIBICAL_LIB_VERSION_STRING
   
"${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}.${LIBICAL_LIB_PATCH_VERSION}"
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libical-3.0.13/ReleaseNotes.txt 
new/libical-3.0.14/ReleaseNotes.txt
--- old/libical-3.0.13/ReleaseNotes.txt 2022-01-17 16:19:56.000000000 +0100
+++ new/libical-3.0.14/ReleaseNotes.txt 2022-02-05 15:02:47.000000000 +0100
@@ -1,6 +1,11 @@
 Release Highlights
 ==================
 
+Version 3.0.14 (05 February 2022):
+----------------------------------
+ * icalvalue: Reset non-UTC icaltimetype::zone on set
+ * Fix icalcomponent_set_due not removing TZID when necessary
+
 Version 3.0.13 (17 January 2022):
 ---------------------------------
  * icalcomponent_get_dtend() return icaltime_null_time(), unless called on 
VEVENT, VAVAILABILITY or VFREEBUSY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libical-3.0.13/src/libical/icalcomponent.c 
new/libical-3.0.14/src/libical/icalcomponent.c
--- old/libical-3.0.13/src/libical/icalcomponent.c      2022-01-17 
16:19:56.000000000 +0100
+++ new/libical-3.0.14/src/libical/icalcomponent.c      2022-02-05 
15:02:47.000000000 +0100
@@ -2382,6 +2382,7 @@
         icalcomponent_add_property(inner, due_prop);
     } else if (due_prop != 0) {
         icalproperty_set_due(due_prop, v);
+        icalproperty_remove_parameter_by_kind(due_prop, ICAL_TZID_PARAMETER);
     } else if (dur_prop != 0) {
         struct icaltimetype start = icalcomponent_get_dtstart(inner);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libical-3.0.13/src/libical/icalderivedvalue.c.in 
new/libical-3.0.14/src/libical/icalderivedvalue.c.in
--- old/libical-3.0.13/src/libical/icalderivedvalue.c.in        2022-01-17 
16:19:56.000000000 +0100
+++ new/libical-3.0.14/src/libical/icalderivedvalue.c.in        2022-02-05 
15:02:47.000000000 +0100
@@ -28,6 +28,7 @@
 #include "icalvalueimpl.h"
 #include "icalerror.h"
 #include "icalmemory.h"
+#include "icaltimezone.h"
 
 #include <errno.h>
 #include <stdlib.h>
@@ -299,6 +300,12 @@
     impl = (struct icalvalue_impl *)value;
     impl->data.v_time = v;
 
+    /* preserve only built-in UTC time zone, otherwise unset any set on the 
'v' */
+    if (impl->data.v_time.zone != NULL &&
+        impl->data.v_time.zone != icaltimezone_get_utc_timezone()) {
+        impl->data.v_time.zone = NULL;
+    }
+
     icalvalue_reset_kind(impl);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libical-3.0.13/src/test/regression.c 
new/libical-3.0.14/src/test/regression.c
--- old/libical-3.0.13/src/test/regression.c    2022-01-17 16:19:56.000000000 
+0100
+++ new/libical-3.0.14/src/test/regression.c    2022-02-05 15:02:47.000000000 
+0100
@@ -4832,6 +4832,119 @@
     icalcomponent_free(c);
 }
 
+static void
+test_icalvalue_resets_timezone_on_set(void)
+{
+    const char *strcomp =
+        "BEGIN:VCALENDAR\r\n"
+        "BEGIN:VTIMEZONE\r\n"
+        "TZID:my_zone\r\n"
+        "BEGIN:STANDARD\r\n"
+        "TZNAME:my_zone\r\n"
+        "DTSTART:19160429T230000\r\n"
+        "TZOFFSETFROM:+0100\r\n"
+        "TZOFFSETTO:+0200\r\n"
+        "RRULE:FREQ=YEARLY;UNTIL=19160430T220000Z;BYDAY=-1SU;BYMONTH=4\r\n"
+        "END:STANDARD\r\n"
+        "END:VTIMEZONE\r\n"
+        "BEGIN:VEVENT\r\n"
+        "UID:0\r\n"
+        "DTSTART;TZID=my_zone:20180101T010000\r\n"
+        "DTEND:20180202T020000Z\r\n"
+        "DUE:20180302T030000\r\n"
+        "END:VEVENT\r\n"
+        "END:VCALENDAR\r\n";
+    icalcomponent *comp, *clone, *inner;
+    icaltimetype comp_dtstart, comp_dtend, comp_due;
+    icaltimetype clone_dtstart, clone_dtend, clone_due;
+    const char *orig_str, *clone_str;
+    int estate;
+
+    estate = icalerror_get_errors_are_fatal();
+    icalerror_set_errors_are_fatal(0);
+
+    /* First try without calling 'set' */
+    comp = icalcomponent_new_from_string(strcomp);
+    ok("1st - vCalendar can be parsed", (comp != NULL));
+    inner = icalcomponent_get_inner(comp);
+    ok("1st - inner exists", (inner != NULL));
+    orig_str = icalcomponent_as_ical_string(inner);
+    comp_dtstart = icalcomponent_get_dtstart(inner);
+    comp_dtend = icalcomponent_get_dtend(inner);
+    comp_due = icalcomponent_get_due(inner);
+    ok("1st - comp dtstart is non-UTC zone", (comp_dtstart.zone != NULL && 
comp_dtstart.zone != icaltimezone_get_utc_timezone()));
+    ok("1st - comp dtend is UTC zone", (comp_dtend.zone == 
icaltimezone_get_utc_timezone()));
+    ok("1st - comp due is floating", (comp_due.zone == NULL));
+    clone = icalcomponent_new_clone(inner);
+    icalcomponent_free(comp);
+    /* note the comp_dtstart.zone points to a freed memory now (it was freed 
with the 'comp') */
+    clone_dtstart = icalcomponent_get_dtstart(clone);
+    clone_dtend = icalcomponent_get_dtend(clone);
+    clone_due = icalcomponent_get_due(clone);
+    ok("1st - clone dtstart is null zone", (clone_dtstart.zone == NULL));
+    ok("1st - clone dtend is UTC zone", (clone_dtend.zone == 
icaltimezone_get_utc_timezone()));
+    ok("1st - clone due is floating", (clone_due.zone == NULL));
+    clone_str = icalcomponent_as_ical_string(clone);
+    ok("1st - clone and orig components match", (strcmp(orig_str, clone_str) 
== 0));
+    icalcomponent_free(clone);
+
+    /* Second try with calling 'set' */
+    comp = icalcomponent_new_from_string(strcomp);
+    inner = icalcomponent_get_inner(comp);
+    orig_str = icalcomponent_as_ical_string(inner);
+    comp_dtstart = icalcomponent_get_dtstart(inner);
+    comp_dtend = icalcomponent_get_dtend(inner);
+    comp_due = icalcomponent_get_due(inner);
+    ok("2nd - comp dtstart is non-UTC zone", (comp_dtstart.zone != NULL && 
comp_dtstart.zone != icaltimezone_get_utc_timezone()));
+    ok("2nd - comp dtend is UTC zone", (comp_dtend.zone == 
icaltimezone_get_utc_timezone()));
+    ok("2nd - comp due is floating", (comp_due.zone == NULL));
+    icalcomponent_set_dtstart(inner, comp_dtstart);
+    icalcomponent_set_dtend(inner, comp_dtend);
+    icalcomponent_set_due(inner, comp_due);
+    comp_dtstart = icalcomponent_get_dtstart(inner);
+    comp_dtend = icalcomponent_get_dtend(inner);
+    comp_due = icalcomponent_get_due(inner);
+    ok("2nd - comp dtstart is non-UTC zone", (comp_dtstart.zone != NULL && 
comp_dtstart.zone != icaltimezone_get_utc_timezone()));
+    ok("2nd - comp dtend is UTC zone after set", (comp_dtend.zone == 
icaltimezone_get_utc_timezone()));
+    ok("2nd - comp due is floating after set", (comp_due.zone == NULL));
+    clone = icalcomponent_new_clone(inner);
+    icalcomponent_free(comp);
+    /* note the comp_dtstart.zone points to a freed memory now (it was freed 
with the 'comp') */
+    clone_dtstart = icalcomponent_get_dtstart(clone);
+    clone_dtend = icalcomponent_get_dtend(clone);
+    clone_due = icalcomponent_get_due(clone);
+    ok("2nd - clone dtstart is null zone", (clone_dtstart.zone == NULL));
+    ok("2nd - clone dtend is UTC zone", (clone_dtend.zone == 
icaltimezone_get_utc_timezone()));
+    ok("2nd - clone due is floating", (clone_due.zone == NULL));
+    clone_str = icalcomponent_as_ical_string(clone);
+    ok("2nd - clone and orig components match", (strcmp(orig_str, clone_str) 
== 0));
+    icalcomponent_free(clone);
+
+    icalerror_set_errors_are_fatal(estate);
+    icalerror_clear_errno();
+}
+
+static void test_remove_tzid_from_due(void)
+{
+    icalproperty *due = 
icalproperty_vanew_due(icaltime_from_string("20220120T120000"), 0);
+    icalcomponent *c;
+
+    icalproperty_add_parameter(due, 
icalparameter_new_tzid("America/New_York"));
+
+    c = icalcomponent_vanew(
+            ICAL_VCALENDAR_COMPONENT,
+                icalcomponent_vanew(
+                    ICAL_VTODO_COMPONENT,
+                    due,
+                    0),
+            0);
+
+    icalcomponent_set_due(c, icaltime_from_string("20220120"));
+    str_is("icalproperty_as_ical_string()", "DUE;VALUE=DATE:20220120\r\n", 
icalproperty_as_ical_string(icalcomponent_get_first_property(icalcomponent_get_inner(c),
 ICAL_DUE_PROPERTY)));
+
+    icalcomponent_free(c);
+}
+
 int main(int argc, char *argv[])
 {
 #if !defined(HAVE_UNISTD_H)
@@ -4972,6 +5085,8 @@
     test_run("Test builtin compat TZID", test_builtin_compat_tzid, do_test, 
do_header);
     test_run("Test VCC vCard parse", test_vcc_vcard_parse, do_test, do_header);
     test_run("Test implicit DTEND and DURATION for VEVENT and VTODO", 
test_implicit_dtend_duration, do_test, do_header);
+    test_run("Test icalvalue resets timezone on set", 
test_icalvalue_resets_timezone_on_set, do_test, do_header);
+    test_run("Test removing TZID from DUE with icalcomponent_set_due", 
test_remove_tzid_from_due, do_test, do_header);
 
     /** OPTIONAL TESTS go here... **/
 

Reply via email to