summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorThomas Heller <theller@ctypes.org>2009-09-08 19:24:36 (GMT)
committerThomas Heller <theller@ctypes.org>2009-09-08 19:24:36 (GMT)
commit81809a42c1639ab6f49900eea15808bf71c6e567 (patch)
treeb8ec41df2183b75bed81dd31dd1c084fc48fad7c /Modules
parent84ddd72312f6606c04e8efaf2cd225811976f769 (diff)
downloadcpython-81809a42c1639ab6f49900eea15808bf71c6e567.zip
cpython-81809a42c1639ab6f49900eea15808bf71c6e567.tar.gz
cpython-81809a42c1639ab6f49900eea15808bf71c6e567.tar.bz2
Make ctypes compile again with older Python versions.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_ctypes/callbacks.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/Modules/_ctypes/callbacks.c b/Modules/_ctypes/callbacks.c
index c7bfa21..a643970 100644
--- a/Modules/_ctypes/callbacks.c
+++ b/Modules/_ctypes/callbacks.c
@@ -95,6 +95,55 @@ PrintError(char *msg, ...)
PyErr_Print();
}
+#if (PY_VERSION_HEX < 0x02070000)
+PyCodeObject *
+PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno)
+{
+ static PyObject *emptystring = NULL;
+ static PyObject *nulltuple = NULL;
+ PyObject *filename_ob = NULL;
+ PyObject *funcname_ob = NULL;
+ PyCodeObject *result = NULL;
+ if (emptystring == NULL) {
+ emptystring = PyString_FromString("");
+ if (emptystring == NULL)
+ goto failed;
+ }
+ if (nulltuple == NULL) {
+ nulltuple = PyTuple_New(0);
+ if (nulltuple == NULL)
+ goto failed;
+ }
+ funcname_ob = PyString_FromString(funcname);
+ if (funcname_ob == NULL)
+ goto failed;
+ filename_ob = PyString_FromString(filename);
+ if (filename_ob == NULL)
+ goto failed;
+
+ result = PyCode_New(0, /* argcount */
+ 0, /* nlocals */
+ 0, /* stacksize */
+ 0, /* flags */
+ emptystring, /* code */
+ nulltuple, /* consts */
+ nulltuple, /* names */
+ nulltuple, /* varnames */
+ nulltuple, /* freevars */
+ nulltuple, /* cellvars */
+ filename_ob, /* filename */
+ funcname_ob, /* name */
+ firstlineno, /* firstlineno */
+ emptystring /* lnotab */
+ );
+
+failed:
+ Py_XDECREF(funcname_ob);
+ Py_XDECREF(filename_ob);
+ return result;
+}
+#endif
+
/* after code that pyrex generates */
void _ctypes_add_traceback(char *funcname, char *filename, int lineno)