From: Thomas Heller <theller@ctypes.org> Date: Thu, 3 May 2007 12:05:20 +0000 (+0000) Subject: Don't truncate pointers to integers (on win64 platform). X-Git-Tag: v2.6a1~1780 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9b73d0aed5e398b83669b4ab5c6f806369d37688;p=python Don't truncate pointers to integers (on win64 platform). --- diff --git a/Modules/_ctypes/callbacks.c b/Modules/_ctypes/callbacks.c index 0e5d6c0456..657a207f53 100644 --- a/Modules/_ctypes/callbacks.c +++ b/Modules/_ctypes/callbacks.c @@ -383,8 +383,27 @@ long Call_GetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) return E_FAIL; } - result = PyObject_CallFunction(func, - "iii", rclsid, riid, ppv); + { + PyObject *py_rclsid = PyLong_FromVoidPtr(rclsid); + PyObject *py_riid = PyLong_FromVoidPtr(riid); + PyObject *py_ppv = PyLong_FromVoidPtr(ppv); + if (!py_rclsid || !py_riid || !py_ppv) { + Py_XDECREF(py_rclsid); + Py_XDECREF(py_riid); + Py_XDECREF(py_ppv); + Py_DECREF(func); + PyErr_WriteUnraisable(context ? context : Py_None); + return E_FAIL; + } + result = PyObject_CallFunctionObjArgs(func, + py_rclsid, + py_riid, + py_ppv, + NULL); + Py_DECREF(py_rclsid); + Py_DECREF(py_riid); + Py_DECREF(py_ppv); + } Py_DECREF(func); if (!result) { PyErr_WriteUnraisable(context ? context : Py_None);