diff options
author | Thomas Heller <theller@ctypes.org> | 2009-09-08 19:24:36 (GMT) |
---|---|---|
committer | Thomas Heller <theller@ctypes.org> | 2009-09-08 19:24:36 (GMT) |
commit | 81809a42c1639ab6f49900eea15808bf71c6e567 (patch) | |
tree | b8ec41df2183b75bed81dd31dd1c084fc48fad7c /Modules | |
parent | 84ddd72312f6606c04e8efaf2cd225811976f769 (diff) | |
download | cpython-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.c | 49 |
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) |