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

thomas.heller python-checkins at python.org
Tue Sep 8 21:24:36 CEST 2009


Author: thomas.heller
Date: Tue Sep  8 21:24:36 2009
New Revision: 74721

Log:
Make ctypes compile again with older Python versions.

Modified:
   python/trunk/Modules/_ctypes/callbacks.c

Modified: python/trunk/Modules/_ctypes/callbacks.c
==============================================================================
--- python/trunk/Modules/_ctypes/callbacks.c	(original)
+++ python/trunk/Modules/_ctypes/callbacks.c	Tue Sep  8 21:24:36 2009
@@ -95,6 +95,55 @@
 	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)


More information about the Python-checkins mailing list