[PATCH] libstdc++:Fixed the bug in std::system_category.message(int) on Windows

Wang Jinghao zheng.xianyuwang@gmail.com
Sun Dec 21 19:44:14 GMT 2025


Ignoring FORMAT_MESSAGE_IGNORE_INSERTS when retrieving system
error messages from FormatMessage may result in unexpected error messages and
trigger new exceptions. This patch changes the
std::system_category.message(int) to be the same as the flags in
gcc/plugin.cc:win32_error_msg()

libstdc++-v3/ChangeLog:

	* src/c++11/system_error.cc:
---
 libstdc++-v3/src/c++11/system_error.cc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/src/c++11/system_error.cc b/libstdc++-v3/src/c++11/system_error.cc
index b9a0b2c158f..ea7b5cd1226 100644
--- a/libstdc++-v3/src/c++11/system_error.cc
+++ b/libstdc++-v3/src/c++11/system_error.cc
@@ -162,7 +162,9 @@ namespace
       char* buf = nullptr;
       auto len
 	= FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM
-			| FORMAT_MESSAGE_ALLOCATE_BUFFER,
+			| FORMAT_MESSAGE_ALLOCATE_BUFFER
+			| FORMAT_MESSAGE_IGNORE_INSERTS
+			| FORMAT_MESSAGE_MAX_WIDTH_MASK,
 			nullptr,
 			i,
 			LANG_USER_DEFAULT,
-- 
2.52.0



More information about the Libstdc++ mailing list