On Sat, 10 Jan 2026 at 13:37, Jonathan Wakely <[email protected]> wrote: > > On Sat, 10 Jan 2026 at 13:28, Wang Jinghao <[email protected]> wrote: > > > > > > On 2026/1/10 20:50, Jonathan Wakely wrote: > > > On Sat, 10 Jan 2026 at 12:24, Jonathan Wakely <[email protected]> > > > wrote: > > >> On Sat, 10 Jan 2026 at 12:17, Jonathan Wakely <[email protected]> > > >> wrote: > > >>> On Sat, 10 Jan 2026 at 10:45, Wang Jinghao <[email protected]> > > >>> wrote: > > >>>> On the mingw32 target, std::system_category().message(int) uses > > >>>> FormatMessage api to format error messages. When the error message > > >>>> contains > > >>>> insert sequences, it is unsafe not to use the > > >>>> FORMAT_MESSAGE_OGNORE_INSERTS > > >>>> flag, as seen at: > > >>>> https://devblogs.microsoft.com/oldnewthing/20071128-00/?p=24353 > > >>>> > > >>>> The output of FormatMessage ends with "\r\n" and includes a Full stop > > >>>> character > > >>>> used by the current thread's UI language. Now, we will remove "\r\n" > > >>>> and > > >>>> any trailing '.' from the output in any language environment. > > >>>> > > >>>> In the testsuite for std::system_category().message(int), we first > > >>>> switch the > > >>>> thread UI language to en-US tomeet expectations in any language > > >>>> environment. > > >>> Thanks, the patch looks good now. > > >>> > > >>>> libstdc++-v3/ChangeLog: > > >>>> > > >>>> * src/c++11/system_error.cc (system_error_category) [_WIN32]: > > >>>> Fix typo in __MINGW32__ macro name. > > >>>> Adjust behavior on the mingw32 target. > > >>> The two lines above relate to the error_category/system_category.cc > > >>> test, not the src/c++11/system_category.cc source file, right? > > > > > > Sorry, I made a mistake. The correction for the __MINGW32__ macro > > > > is in error_category/system_category.cc. > > > > > > >>>> Use FormatMessageA function instead of FormatMessage macro. > > >>>> * testsuite/19_diagnostics/error_category/system_category.cc: > > >>>> Adjust behavior on the mingw32 target. > > >>> I've just noticed that there's no Signed-off-by trailer in the patch. > > >>> Do you have a copyright assignment filed with the FSF? > > >>> > > >>> As documented at https://gcc.gnu.org/contribute.html#legal we need > > >>> either a copyright assignment, or DCO sign-off. > > >>> > > >>> If you don't have a copyrigh assignment, could you please add the > > >>> Signed-off-by trailer if you are willing and able to agree to the > > >>> terms of https://gcc.gnu.org/dco.html ? > > >> Actually, don't worry, I don't think this change can be considered > > >> "legally significant", because the changes are small except for some > > >> whitespace changes and typo fixes. > > >> > > >> So I'll push this to the git repo - thanks for fixing it! > > > > > > Thank you for your reminder! > > > > > > > Hmm, when I test this with mingw-w64 under Wine, I get: > > > > > > /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc > > > 01ec:fixme:nls:RtlSetThreadPreferredUILanguages 8, 00000001400A8122, > > > 000000000021FE8C > > > /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc:127: > > > void test03(): Assertion 'msg == "Access is denied"' > > > failed. > > > FAIL: > > > /home/jwakely/src/gcc/gcc/libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc > > > > > > Inspecting the 'msg' string, the content is "Access denied", which is > > > what we have on trunk today. > > > > > > Can you confirm whether it should be "Access is denied" (as in your > > > patch) or "Access denied"? > > > > I apologize that I haven't tested it on Wine, but the the error message > > I encountered on my Windows 11 Version 10.0.26200 system was "Access is > > denied," which is the same as the one recorded in Microsoft Docs, see > > here: > > https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/Debug/system-error-codes--0-499-.md > > or > > https://winprotocoldoc.z19.web.core.windows.net/MS-ERREF/%5bMS-ERREF%5d.pdf > > This is probably because Wine is implemented differently than Microsoft > > Windows. :( > > Thanks for checking. Somebody else has also confirmed that the strings > are different for Windows and Wine. > > > > > Perhaps we also need to add checks for the Wine environment, like those > > found at > > https://web.archive.org/web/20131028024505/https://www.winehq.org/pipermail/wine-devel/2008-September/069387.html > > Hmm, we could do. I think it's easier to just check that the string > starts with "Access " and ends with " denied", which will match both > strings. I'll change that.
I've pushed your patch to trunk now, and will backport it to the release branches at a later date. Thanks again for the fix.
