[Python-checkins] gh-95417: Quick fix for "ULONG_PTR differs in levels of indirection from void *" (GH-95538)

zooba webhook-mailer at python.org
Mon Aug 1 12:30:20 EDT 2022


https://github.com/python/cpython/commit/858c9a58bf56cefc792bf0eb1ba22984b7b2d150
commit: 858c9a58bf56cefc792bf0eb1ba22984b7b2d150
branch: main
author: Oleg Iarygin <oleg at arhadthedev.net>
committer: zooba <steve.dower at microsoft.com>
date: 2022-08-01T17:30:15+01:00
summary:

gh-95417: Quick fix for "ULONG_PTR differs in levels of indirection from void *" (GH-95538)

files:
M Modules/clinic/overlapped.c.h
M Modules/overlapped.c

diff --git a/Modules/clinic/overlapped.c.h b/Modules/clinic/overlapped.c.h
index 721b38c75ceef..1c216633eb95f 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 0cec9eedc87f0..369b1beae84e3 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



More information about the Python-checkins mailing list