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. :(
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