summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorThomas Heller <theller@ctypes.org>2007-06-08 19:39:31 (GMT)
committerThomas Heller <theller@ctypes.org>2007-06-08 19:39:31 (GMT)
commit11c58c4c8d8376565dbb8f04d08d915022ba5028 (patch)
tree045682e19a310cbd52dd1d24543f68db3a957eb7 /Modules
parentbc9e5dcf887005a9ffc0bca0baedb21df20cb6b0 (diff)
downloadcpython-11c58c4c8d8376565dbb8f04d08d915022ba5028.zip
cpython-11c58c4c8d8376565dbb8f04d08d915022ba5028.tar.gz
cpython-11c58c4c8d8376565dbb8f04d08d915022ba5028.tar.bz2
Merged revisions 55129-55131 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk/Lib/ctypes ........ r55129 | thomas.heller | 2007-05-04 21:54:22 +0200 (Fr, 04 Mai 2007) | 3 lines Do not truncate 64-bit pointers to 32-bit integers. Fixes SF #1703286, will backport to release25-maint. ........ r55131 | thomas.heller | 2007-05-04 21:56:32 +0200 (Fr, 04 Mai 2007) | 1 line Oops, these tests do not run on Windows CE. ........
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_ctypes/callproc.c22
-rw-r--r--Modules/_ctypes/ctypes.h6
2 files changed, 17 insertions, 11 deletions
diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c
index 0c35f38..58aa9bb 100644
--- a/Modules/_ctypes/callproc.c
+++ b/Modules/_ctypes/callproc.c
@@ -1111,10 +1111,10 @@ static char free_library_doc[] =
Free the handle of an executable previously loaded by LoadLibrary.\n";
static PyObject *free_library(PyObject *self, PyObject *args)
{
- HMODULE hMod;
- if (!PyArg_ParseTuple(args, "i:FreeLibrary", &hMod))
+ void *hMod;
+ if (!PyArg_ParseTuple(args, PY_VOID_P_CODE ":FreeLibrary", &hMod))
return NULL;
- if (!FreeLibrary(hMod))
+ if (!FreeLibrary((HMODULE)hMod))
return PyErr_SetFromWindowsErr(GetLastError());
Py_INCREF(Py_None);
return Py_None;
@@ -1233,9 +1233,9 @@ static PyObject *py_dl_open(PyObject *self, PyObject *args)
static PyObject *py_dl_close(PyObject *self, PyObject *args)
{
- void * handle;
+ void *handle;
- if (!PyArg_ParseTuple(args, "i:dlclose", &handle))
+ if (!PyArg_ParseTuple(args, PY_VOID_P_CODE ":dlclose", &handle))
return NULL;
if (dlclose(handle)) {
PyErr_SetString(PyExc_OSError,
@@ -1252,7 +1252,7 @@ static PyObject *py_dl_sym(PyObject *self, PyObject *args)
void *handle;
void *ptr;
- if (!PyArg_ParseTuple(args, "is:dlsym", &handle, &name))
+ if (!PyArg_ParseTuple(args, PY_VOID_P_CODE "s:dlsym", &handle, &name))
return NULL;
ptr = ctypes_dlsym(handle, name);
if (!ptr) {
@@ -1260,7 +1260,7 @@ static PyObject *py_dl_sym(PyObject *self, PyObject *args)
ctypes_dlerror());
return NULL;
}
- return Py_BuildValue("i", ptr);
+ return PyLong_FromVoidPtr(ptr);
}
#endif
@@ -1272,12 +1272,12 @@ static PyObject *py_dl_sym(PyObject *self, PyObject *args)
static PyObject *
call_function(PyObject *self, PyObject *args)
{
- PPROC func;
+ void *func;
PyObject *arguments;
PyObject *result;
if (!PyArg_ParseTuple(args,
- "iO!",
+ PY_VOID_P_CODE "O!",
&func,
&PyTuple_Type, &arguments))
return NULL;
@@ -1303,12 +1303,12 @@ call_function(PyObject *self, PyObject *args)
static PyObject *
call_cdeclfunction(PyObject *self, PyObject *args)
{
- PPROC func;
+ void *func;
PyObject *arguments;
PyObject *result;
if (!PyArg_ParseTuple(args,
- "iO!",
+ PY_VOID_P_CODE "O!",
&func,
&PyTuple_Type, &arguments))
return NULL;
diff --git a/Modules/_ctypes/ctypes.h b/Modules/_ctypes/ctypes.h
index 0af7851..5fb6030 100644
--- a/Modules/_ctypes/ctypes.h
+++ b/Modules/_ctypes/ctypes.h
@@ -23,6 +23,12 @@ typedef int Py_ssize_t;
#define PY_LONG_LONG LONG_LONG
#endif
+#if SIZEOF_VOID_P == SIZEOF_LONG
+#define PY_VOID_P_CODE "k"
+#elif defined(HAVE_LONG_LONG) && (SIZEOF_VOID_P == SIZEOF_LONG_LONG)
+#define PY_VOID_P_CODE "K"
+#endif
+
typedef struct tagPyCArgObject PyCArgObject;
typedef struct tagCDataObject CDataObject;
typedef PyObject *(* GETFUNC)(void *, unsigned size);