diff options
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/newmodule.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Modules/newmodule.c b/Modules/newmodule.c index 456e440..21b82ef 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) |