[Python-checkins] r55093 - python/trunk/Modules/_ctypes/callbacks.c

thomas.heller python-checkins at python.org
Thu May 3 14:05:23 CEST 2007


Author: thomas.heller
Date: Thu May  3 14:05:20 2007
New Revision: 55093

Modified:
   python/trunk/Modules/_ctypes/callbacks.c
Log:
Don't truncate pointers to integers (on win64 platform).

Modified: python/trunk/Modules/_ctypes/callbacks.c
==============================================================================
--- python/trunk/Modules/_ctypes/callbacks.c	(original)
+++ python/trunk/Modules/_ctypes/callbacks.c	Thu May  3 14:05:20 2007
@@ -383,8 +383,27 @@
 		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);


More information about the Python-checkins mailing list