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.

Reply via email to