From 858c9a58bf56cefc792bf0eb1ba22984b7b2d150 Mon Sep 17 00:00:00 2001 From: Oleg Iarygin Date: Mon, 1 Aug 2022 19:30:15 +0300 Subject: [PATCH] gh-95417: Quick fix for "ULONG_PTR differs in levels of indirection from void *" (GH-95538) --- Modules/clinic/overlapped.c.h | 6 +++--- Modules/overlapped.c | 10 +++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Modules/clinic/overlapped.c.h b/Modules/clinic/overlapped.c.h index 721b38c75ceef3..1c216633eb95f0 100644 --- a/Modules/clinic/overlapped.c.h +++ b/Modules/clinic/overlapped.c.h @@ -37,7 +37,7 @@ _overlapped_CreateIoCompletionPort(PyObject *module, PyObject *const *args, Py_s if (!ExistingCompletionPort && PyErr_Occurred()) { goto exit; } - CompletionKey = PyLong_AsVoidPtr(args[2]); + CompletionKey = (uintptr_t)PyLong_AsVoidPtr(args[2]); if (!CompletionKey && PyErr_Occurred()) { goto exit; } @@ -124,7 +124,7 @@ _overlapped_PostQueuedCompletionStatus(PyObject *module, PyObject *const *args, if (!_PyLong_UnsignedLong_Converter(args[1], &NumberOfBytes)) { goto exit; } - CompletionKey = PyLong_AsVoidPtr(args[2]); + CompletionKey = (uintptr_t)PyLong_AsVoidPtr(args[2]); if (!CompletionKey && PyErr_Occurred()) { goto exit; } @@ -1225,4 +1225,4 @@ _overlapped_Overlapped_WSARecvFromInto(OverlappedObject *self, PyObject *const * return return_value; } -/*[clinic end generated code: output=d90cda84e49a7c23 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=edd05b7a6c9c3aac input=a9049054013a1b77]*/ diff --git a/Modules/overlapped.c b/Modules/overlapped.c index 0cec9eedc87f09..369b1beae84e3f 100644 --- a/Modules/overlapped.c +++ b/Modules/overlapped.c @@ -52,13 +52,21 @@ class HANDLE_converter(pointer_converter): class ULONG_PTR_converter(pointer_converter): type = 'ULONG_PTR' + def parse_arg(self, argname, displayname): + return """ + {paramname} = (uintptr_t)PyLong_AsVoidPtr({argname}); + if (!{paramname} && PyErr_Occurred()) {{{{ + goto exit; + }}}} + """.format(argname=argname, paramname=self.parser_name) + class DWORD_converter(unsigned_long_converter): type = 'DWORD' class BOOL_converter(int_converter): type = 'BOOL' [python start generated code]*/ -/*[python end generated code: output=da39a3ee5e6b4b0d input=a19133a9e14fae9c]*/ +/*[python end generated code: output=da39a3ee5e6b4b0d input=8a07ea3018f4cec8]*/ /*[clinic input] module _overlapped