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.
This commit is contained in:
Jonathan Wakely 2023-01-04 20:49:59 +00:00
parent b1ad748754
commit 56be197076

View File

@ -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;
}