libstdc++: Do not optimize away storing pathname if it's needed

libstdc++-v3/ChangeLog:

	* src/c++17/fs_dir.cc (_Dir::_Dir) [!_GLIBCXX_HAVE_OPENAT]:
	Always store pathname if we don't have openat or unlinkat,
	because the full path is needed to open sub-directories and
	remove entries.
This commit is contained in:
Jonathan Wakely 2022-06-28 09:26:12 +01:00
parent 020b7d9858
commit 835b19936b

View file

@ -48,7 +48,7 @@ struct fs::_Dir : _Dir_base
[[maybe_unused]] bool filename_only, error_code& ec)
: _Dir_base(fdcwd(), p.c_str(), skip_permission_denied, nofollow, ec)
{
#if _GLIBCXX_HAVE_DIRFD
#if _GLIBCXX_HAVE_DIRFD && _GLIBCXX_HAVE_OPENAT && _GLIBCXX_HAVE_UNLINKAT
if (filename_only)
return; // Do not store path p when we aren't going to use it.
#endif