From: Jonathan Wakely Date: Wed, 4 Jan 2023 20:49:59 +0000 (+0000) Subject: libstdc++: Support single components in name of chrono::current_zone() [PR108211] X-Git-Tag: basepoints/gcc-14~2203 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=56be1970765b6302de19977790a537d6feaaa34b;p=thirdparty%2Fgcc.git libstdc++: Support single components in name of chrono::current_zone() [PR108211] We currently only handle the case where /etc/localtime is a symlink to a path like ".../Etc/UTC" and fail for ".../UTC". This makes both work. libstdc++-v3/ChangeLog: PR libstdc++/108211 * src/c++20/tzdb.cc (chrono::current_zone()): Check for zone using only last component of the name. --- diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc index 6772517d55ae..9103b1594009 100644 --- a/libstdc++-v3/src/c++20/tzdb.cc +++ b/libstdc++-v3/src/c++20/tzdb.cc @@ -1501,8 +1501,11 @@ namespace std::chrono if (std::distance(first, last) > 2) { --last; - string name = std::prev(last)->string() + '/'; - name += last->string(); + string name = last->string(); + if (auto tz = do_locate_zone(this->zones, this->links, name)) + return tz; + --last; + name = last->string() + '/' + name; if (auto tz = do_locate_zone(this->zones, this->links, name)) return tz; }