From a6563650c835d50f7302971a5b145e94f9d0dc68 Mon Sep 17 00:00:00 2001 From: Zackery Spytz Date: Mon, 9 Sep 2019 03:20:39 -0600 Subject: [PATCH] bpo-37445: Include FORMAT_MESSAGE_IGNORE_INSERTS in FormatMessageW() calls (GH-14462) If FormatMessageW() is passed the FORMAT_MESSAGE_FROM_SYSTEM flag without FORMAT_MESSAGE_IGNORE_INSERTS, it will fail if there are insert sequences in the message definition. --- .../next/Windows/2019-06-28-18-10-29.bpo-37445.LsdYO6.rst | 2 ++ Modules/_ctypes/callproc.c | 4 +++- Modules/overlapped.c | 3 ++- PC/bdist_wininst/install.c | 3 ++- 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Windows/2019-06-28-18-10-29.bpo-37445.LsdYO6.rst diff --git a/Misc/NEWS.d/next/Windows/2019-06-28-18-10-29.bpo-37445.LsdYO6.rst b/Misc/NEWS.d/next/Windows/2019-06-28-18-10-29.bpo-37445.LsdYO6.rst new file mode 100644 index 00000000000000..e4805b4e02fb12 --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2019-06-28-18-10-29.bpo-37445.LsdYO6.rst @@ -0,0 +1,2 @@ +Include the ``FORMAT_MESSAGE_IGNORE_INSERTS`` flag in ``FormatMessageW()`` +calls. diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c index 85fa79983ec1e2..a13c89fa826247 100644 --- a/Modules/_ctypes/callproc.c +++ b/Modules/_ctypes/callproc.c @@ -242,7 +242,9 @@ static WCHAR *FormatError(DWORD code) { WCHAR *lpMsgBuf; DWORD n; - n = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + n = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, NULL, code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */ diff --git a/Modules/overlapped.c b/Modules/overlapped.c index 44a0a5a834633f..52ed0bc284bcc0 100644 --- a/Modules/overlapped.c +++ b/Modules/overlapped.c @@ -500,7 +500,8 @@ overlapped_FormatMessage(PyObject *ignore, PyObject *args) return NULL; n = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM, + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, NULL, code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), diff --git a/PC/bdist_wininst/install.c b/PC/bdist_wininst/install.c index 0219a195bc98ce..5d77542582a0d4 100644 --- a/PC/bdist_wininst/install.c +++ b/PC/bdist_wininst/install.c @@ -938,7 +938,8 @@ static BOOL SystemError(int error, char *msg) LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM, + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),