summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-08-22 22:04:41 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2016-08-22 22:04:41 (GMT)
commitf45a56150b029cb7bbe2b928858b12f28f31943c (patch)
treeb52a1f4b7a433faa593f9aaee7aec58afeb1fad0 /Python
parent3a840972915ef05cb6d7c58df84100be05d9e35b (diff)
downloadcpython-f45a56150b029cb7bbe2b928858b12f28f31943c.zip
cpython-f45a56150b029cb7bbe2b928858b12f28f31943c.tar.gz
cpython-f45a56150b029cb7bbe2b928858b12f28f31943c.tar.bz2
Issue #27809: PyErr_SetImportError() uses fast call
Diffstat (limited to 'Python')
-rw-r--r--Python/errors.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/Python/errors.c b/Python/errors.c
index 956e4fa..e6285e8 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -699,18 +699,14 @@ PyObject *PyErr_SetFromWindowsErrWithUnicodeFilename(
PyObject *
PyErr_SetImportError(PyObject *msg, PyObject *name, PyObject *path)
{
- PyObject *args, *kwargs, *error;
+ PyObject *kwargs, *error;
- if (msg == NULL)
- return NULL;
-
- args = PyTuple_New(1);
- if (args == NULL)
+ if (msg == NULL) {
return NULL;
+ }
kwargs = PyDict_New();
if (kwargs == NULL) {
- Py_DECREF(args);
return NULL;
}
@@ -722,22 +718,20 @@ PyErr_SetImportError(PyObject *msg, PyObject *name, PyObject *path)
path = Py_None;
}
- Py_INCREF(msg);
- PyTuple_SET_ITEM(args, 0, msg);
-
- if (PyDict_SetItemString(kwargs, "name", name) < 0)
+ if (PyDict_SetItemString(kwargs, "name", name) < 0) {
goto done;
- if (PyDict_SetItemString(kwargs, "path", path) < 0)
+ }
+ if (PyDict_SetItemString(kwargs, "path", path) < 0) {
goto done;
+ }
- error = PyObject_Call(PyExc_ImportError, args, kwargs);
+ error = _PyObject_FastCallDict(PyExc_ImportError, &msg, 1, kwargs);
if (error != NULL) {
PyErr_SetObject((PyObject *)Py_TYPE(error), error);
Py_DECREF(error);
}
done:
- Py_DECREF(args);
Py_DECREF(kwargs);
return NULL;
}