From: Guido van Rossum Date: Mon, 13 Nov 2000 20:29:20 +0000 (+0000) Subject: Allow new.function() called with explicit 3rd arg of None, as X-Git-Tag: v2.1a1~740 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1bff883ac07b901c6199e0f79c3f93330ab24eae;p=thirdparty%2FPython%2Fcpython.git Allow new.function() called with explicit 3rd arg of None, as documented, and as is reasonable (since it is optional, but there's another argument following it that may require you to specify a value). This solves SF bug 121887. --- diff --git a/Modules/newmodule.c b/Modules/newmodule.c index 456e44062ef3..21b82ef824de 100644 --- a/Modules/newmodule.c +++ b/Modules/newmodule.c @@ -70,12 +70,17 @@ new_function(PyObject* unused, PyObject* args) PyObject* defaults = Py_None; PyFunctionObject* newfunc; - if (!PyArg_ParseTuple(args, "O!O!|SO!:function", + if (!PyArg_ParseTuple(args, "O!O!|OO!:function", &PyCode_Type, &code, &PyDict_Type, &globals, &name, &PyTuple_Type, &defaults)) return NULL; + if (name != Py_None && !PyString_Check(name)) { + PyErr_SetString(PyExc_TypeError, + "arg 3 (name) must be None or string"); + return NULL; + } newfunc = (PyFunctionObject *)PyFunction_New(code, globals); if (newfunc == NULL)