diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-08-22 22:04:41 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-08-22 22:04:41 (GMT) |
commit | f45a56150b029cb7bbe2b928858b12f28f31943c (patch) | |
tree | b52a1f4b7a433faa593f9aaee7aec58afeb1fad0 /Python | |
parent | 3a840972915ef05cb6d7c58df84100be05d9e35b (diff) | |
download | cpython-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.c | 22 |
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; } |