Index: patches/tzdetect2.patch |
diff --git a/patches/tzdetect2.patch b/patches/tzdetect2.patch |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6b9189fc50660f54e9542823df9cba6038c96693 |
--- /dev/null |
+++ b/patches/tzdetect2.patch |
@@ -0,0 +1,50 @@ |
+diff --git a/source/common/putil.cpp b/source/common/putil.cpp |
+index 599dad9..0f5090c 100644 |
+--- a/source/common/putil.cpp |
++++ b/source/common/putil.cpp |
+@@ -970,6 +970,15 @@ static char* searchForTZFile(const char* path, DefaultTZInfo* tzInfo) { |
+ return result; |
+ } |
+ #endif |
++ |
++U_CAPI void U_EXPORT2 |
++uprv_tzname_clear_cache() |
++{ |
++#if defined(CHECK_LOCALTIME_LINK) && !defined(DEBUG_SKIP_LOCALTIME_LINK) |
++ gTimeZoneBufferPtr = NULL; |
++#endif |
++} |
++ |
+ U_CAPI const char* U_EXPORT2 |
+ uprv_tzname(int n) |
+ { |
+diff --git a/source/common/putilimp.h b/source/common/putilimp.h |
+index d2c1c66..e3da340 100644 |
+--- a/source/common/putilimp.h |
++++ b/source/common/putilimp.h |
+@@ -483,6 +483,12 @@ U_INTERNAL int32_t U_EXPORT2 uprv_timezone(void); |
+ U_INTERNAL const char* U_EXPORT2 uprv_tzname(int n); |
+ |
+ /** |
++ * Reset the global tzname cache. |
++ * @internal |
++ */ |
++U_INTERNAL void uprv_tzname_clear_cache(); |
++ |
++/** |
+ * Get UTC (GMT) time measured in milliseconds since 0:00 on 1/1/1970. |
+ * This function is affected by 'faketime' and should be the bottleneck for all user-visible ICU time functions. |
+ * @return the UTC time measured in milliseconds |
+diff --git a/source/i18n/timezone.cpp b/source/i18n/timezone.cpp |
+index 6b3f8d2..a80fdda 100644 |
+--- a/source/i18n/timezone.cpp |
++++ b/source/i18n/timezone.cpp |
+@@ -453,6 +453,8 @@ TimeZone::detectHostTimeZone() |
+ |
+ uprv_tzset(); // Initialize tz... system data |
+ |
++ uprv_tzname_clear_cache(); |
++ |
+ // Get the timezone ID from the host. This function should do |
+ // any required host-specific remapping; e.g., on Windows this |
+ // function maps the Date and Time control panel setting to an |