mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
sense now that extension types can support __init__ directly rather than requiring function constructors.
This commit is contained in:
parent
92bb6e7b96
commit
233cc5987b
1 changed files with 16 additions and 14 deletions
|
@ -56,22 +56,24 @@ Py_InitModule4(char *name, PyMethodDef *methods, char *doc,
|
||||||
if ((m = PyImport_AddModule(name)) == NULL)
|
if ((m = PyImport_AddModule(name)) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
d = PyModule_GetDict(m);
|
d = PyModule_GetDict(m);
|
||||||
for (ml = methods; ml->ml_name != NULL; ml++) {
|
if (methods != NULL) {
|
||||||
if ((ml->ml_flags & METH_CLASS) ||
|
for (ml = methods; ml->ml_name != NULL; ml++) {
|
||||||
(ml->ml_flags & METH_STATIC)) {
|
if ((ml->ml_flags & METH_CLASS) ||
|
||||||
PyErr_SetString(PyExc_ValueError,
|
(ml->ml_flags & METH_STATIC)) {
|
||||||
"module functions cannot set"
|
PyErr_SetString(PyExc_ValueError,
|
||||||
" METH_CLASS or METH_STATIC");
|
"module functions cannot set"
|
||||||
return NULL;
|
" METH_CLASS or METH_STATIC");
|
||||||
}
|
return NULL;
|
||||||
v = PyCFunction_New(ml, passthrough);
|
}
|
||||||
if (v == NULL)
|
v = PyCFunction_New(ml, passthrough);
|
||||||
return NULL;
|
if (v == NULL)
|
||||||
if (PyDict_SetItemString(d, ml->ml_name, v) != 0) {
|
return NULL;
|
||||||
|
if (PyDict_SetItemString(d, ml->ml_name, v) != 0) {
|
||||||
|
Py_DECREF(v);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
Py_DECREF(v);
|
Py_DECREF(v);
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
Py_DECREF(v);
|
|
||||||
}
|
}
|
||||||
if (doc != NULL) {
|
if (doc != NULL) {
|
||||||
v = PyString_FromString(doc);
|
v = PyString_FromString(doc);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue