[llvm-branch-commits] [libcxx] 71ee354 - [libc++][TZDB] Fixes %z escaping. (#125399)
Tom Stellard via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Feb 6 22:55:59 PST 2025
Author: Mark de Wever
Date: 2025-02-06T22:53:04-08:00
New Revision: 71ee354bab4ad4e3132d079f11e7b9771012442c
URL: https://github.com/llvm/llvm-project/commit/71ee354bab4ad4e3132d079f11e7b9771012442c
DIFF: https://github.com/llvm/llvm-project/commit/71ee354bab4ad4e3132d079f11e7b9771012442c.diff
LOG: [libc++][TZDB] Fixes %z escaping. (#125399)
The previous tested TZDB did not contain %z for the rule letters. The
usage of %z in TZDB 2024b revealed a bug in the implementation. The
patch fixes it and has been locally tested with TZDB 2024b.
Fixes #108957
(cherry picked from commit a27f3b2bb137001735949549354aff89dbf227f4)
Added:
Modified:
libcxx/src/experimental/time_zone.cpp
libcxx/test/libcxx/time/time.zone/time.zone.timezone/time.zone.members/get_info.sys_time.pass.cpp
Removed:
################################################################################
diff --git a/libcxx/src/experimental/time_zone.cpp b/libcxx/src/experimental/time_zone.cpp
index f7d82a5d4cfc30c..289164ab1203642 100644
--- a/libcxx/src/experimental/time_zone.cpp
+++ b/libcxx/src/experimental/time_zone.cpp
@@ -668,7 +668,7 @@ __first_rule(seconds __stdoff, const vector<__tz::__rule>& __rules) {
__continuation_end,
__continuation.__stdoff + __save,
chrono::duration_cast<minutes>(__save),
- __continuation.__format},
+ chrono::__format(__continuation, __continuation.__format, __save)},
true};
}
diff --git a/libcxx/test/libcxx/time/time.zone/time.zone.timezone/time.zone.members/get_info.sys_time.pass.cpp b/libcxx/test/libcxx/time/time.zone/time.zone.timezone/time.zone.members/get_info.sys_time.pass.cpp
index 7f08c64d5e0e715..afd1273421f3985 100644
--- a/libcxx/test/libcxx/time/time.zone/time.zone.timezone/time.zone.members/get_info.sys_time.pass.cpp
+++ b/libcxx/test/libcxx/time/time.zone/time.zone.timezone/time.zone.members/get_info.sys_time.pass.cpp
@@ -157,7 +157,6 @@ static void test_abbrev(std::string_view input, std::string_view expected) {
TEST_LIBCPP_REQUIRE(result == expected, TEST_WRITE_CONCATENATED("\nExpected ", expected, "\nActual ", result, '\n'));
}
-// This format is valid, however is not used in the tzdata.zi.
static void percentage_z_format() {
test_abbrev(
R"(
@@ -188,6 +187,12 @@ Z Format 0:45 F %z)",
R F 1999 max - Jan 5 0 -1 foo
Z Format 0:45 F %z)",
"-0015");
+
+ test_abbrev(
+ R"(
+Z Format -1:2:20 - LMT 1912 Ja 1 1u
+-1 - %z)",
+ "-01");
}
int main(int, const char**) {
More information about the llvm-branch-commits
mailing list