On Fri, 11 Nov 2022 at 17:44, Jonathan Wakely via Libstdc++ <libstd...@gcc.gnu.org> wrote: > > Tested x86_64-linux and x86_64-w64-ming32 (via Wine).
Sigh, I did test on Wine, but then what I pushed didn't include the fix that was found thanks to that testing. This is needed to prevent runtime errors on Windows when constructing paths. Pushed to trunk.
commit 8214ec0cf33482f60139ae18a40567317e63c1ff Author: Jonathan Wakely <jwak...@redhat.com> Date: Fri Nov 11 22:25:14 2022 libstdc++: Fix <experimental/filesystem> for Windows [PR95048] I meant to include this change in r13-3909-gb331bf303bdc1e but I forgot to sync it from the machine where I did the mingw testing to the one where I pushed the commit. libstdc++-v3/ChangeLog: PR libstdc++/95048 * include/experimental/bits/fs_path.h (path::_Cvt::_S_wconvert): Construct codecvt directly instead of getting it from the locale. diff --git a/libstdc++-v3/include/experimental/bits/fs_path.h b/libstdc++-v3/include/experimental/bits/fs_path.h index 6e2f47f5e63..a493e17a37e 100644 --- a/libstdc++-v3/include/experimental/bits/fs_path.h +++ b/libstdc++-v3/include/experimental/bits/fs_path.h @@ -792,8 +792,7 @@ namespace __detail static string_type _S_wconvert(const char* __f, const char* __l, const char*) { - using _Cvt = std::codecvt_utf8_utf16<wchar_t>; - const auto& __cvt = std::use_facet<_Cvt>(std::locale{}); + std::codecvt_utf8_utf16<wchar_t> __cvt; std::wstring __wstr; if (__str_codecvt_in_all(__f, __l, __wstr, __cvt)) return __wstr;