From: Thomas Heller Date: Tue, 8 Sep 2009 19:24:36 +0000 (+0000) Subject: Make ctypes compile again with older Python versions. X-Git-Tag: v2.7a1~567 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=81809a42c1639ab6f49900eea15808bf71c6e567;p=python Make ctypes compile again with older Python versions. --- diff --git a/Modules/_ctypes/callbacks.c b/Modules/_ctypes/callbacks.c index c7bfa21b83..a643970586 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)