~ruther/guix-local

15a96bd6e981f37b7304b1803dbafc75acc0b8f6 — Jonathan Brielmaier 2 years ago 71f0676
gnu: icu4c: Add patch for VTIMEZONE bug.

Icedove@115 does not properly work without this patch. See:
https://bugzilla.mozilla.org/show_bug.cgi?id=1843007

* gnu/packages/icu4c.scm (icu4c-73)[source]: Use patch.
* gnu/packages/patches/icu4c-icu-22132-fix-vtimezone.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register patch.
Change-Id: Ie64d1e33afedbaedbaafaeb607a201eb671ac7bd

Change-Id: I6d753eacc7daac5663128b20a550044d0fd0ddb7
3 files changed, 35 insertions(+), 2 deletions(-)

M gnu/local.mk
M gnu/packages/icu4c.scm
A gnu/packages/patches/icu4c-icu-22132-fix-vtimezone.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 1511,6 1511,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/icecat-use-system-wide-dir.patch		\
  %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch	\
  %D%/packages/patches/icedtea-7-hotspot-pointer-comparison.patch	\
  %D%/packages/patches/icu4c-icu-22132-fix-vtimezone.patch	\
  %D%/packages/patches/icu4c-fix-TestHebrewCalendarInTemporalLeapYear.patch	\
  %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
  %D%/packages/patches/id3lib-UTF16-writing-bug.patch			\

M gnu/packages/icu4c.scm => gnu/packages/icu4c.scm +3 -2
@@ 126,8 126,9 @@ C/C++ part.")
               (base32
                "0iccpdvc0kvpww5a31k9gjkqigyz016i7v80r9zamd34w4fl6mx4"))
              (patches
               (cons
                (search-patch
               (append
                (search-patches
                 "icu4c-icu-22132-fix-vtimezone.patch"
                 "icu4c-fix-TestHebrewCalendarInTemporalLeapYear.patch")
                (origin-patches (package-source icu4c))))))))


A gnu/packages/patches/icu4c-icu-22132-fix-vtimezone.patch => gnu/packages/patches/icu4c-icu-22132-fix-vtimezone.patch +31 -0
@@ 0,0 1,31 @@
Source: https://unicode-org.atlassian.net/browse/ICU-22132?focusedCommentId=166752
Author: Sean Burke
License:
Fixes: https://bugzilla.mozilla.org/show_bug.cgi?id=1843007

diff --git a/icu4c/source/i18n/vtzone.cpp b/icu4c/source/i18n/vtzone.cpp
index 3035106701..5e738e11fa 100644
--- a/source/i18n/vtzone.cpp
+++ b/source/i18n/vtzone.cpp
@@ -1735,14 +1735,14 @@ VTimeZone::write(VTZWriter& writer, UErrorCode& status) const {
             }
         }
     } else {
-        UnicodeString icutzprop;
-        UVector customProps(nullptr, uhash_compareUnicodeString, status);
+        UVector customProps(uprv_deleteUObject, uhash_compareUnicodeString, status);
         if (olsonzid.length() > 0 && icutzver.length() > 0) {
-            icutzprop.append(olsonzid);
-            icutzprop.append(u'[');
-            icutzprop.append(icutzver);
-            icutzprop.append(u']');
-            customProps.addElement(&icutzprop, status);
+            LocalPointer<UnicodeString> icutzprop(new UnicodeString(ICU_TZINFO_PROP), status);
+            icutzprop->append(olsonzid);
+            icutzprop->append(u'[');
+            icutzprop->append(icutzver);
+            icutzprop->append(u']');
+            customProps.adoptElement(icutzprop.orphan(), status);
         }
         writeZone(writer, *tz, &customProps, status);
     }