summaryrefslogtreecommitdiff
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-08-22 23:33:13 +0200
committerVictor Stinner <victor.stinner@gmail.com>2016-08-22 23:33:13 +0200
commit04ca689091773fa19c16bcacfccae2914e3fae56 (patch)
tree94328cc522f105e2ae6d53528cf5efa6b6b4d885 /Python
parent947bc084fc2339a44e3f55169653edd8bd17c248 (diff)
downloadcpython-04ca689091773fa19c16bcacfccae2914e3fae56.tar.gz
Issue #27809: Use _PyObject_FastCallDict()
Modify: * init_subclass() * builtin___build_class__() Fix also a bug in init_subclass(): check for super() failure.
Diffstat (limited to 'Python')
-rw-r--r--Python/bltinmodule.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 1cdc0e2563..b22867eb07 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -155,16 +155,8 @@ builtin___build_class__(PyObject *self, PyObject *args, PyObject *kwds)
}
}
else {
- PyObject *pargs = PyTuple_Pack(2, name, bases);
- if (pargs == NULL) {
- Py_DECREF(prep);
- Py_DECREF(meta);
- Py_XDECREF(mkw);
- Py_DECREF(bases);
- return NULL;
- }
- ns = PyEval_CallObjectWithKeywords(prep, pargs, mkw);
- Py_DECREF(pargs);
+ PyObject *pargs[2] = {name, bases};
+ ns = _PyObject_FastCallDict(prep, pargs, 2, mkw);
Py_DECREF(prep);
}
if (ns == NULL) {