mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
rename args variable in CALL_FUNCTION to callargs (avoids name
override) add missing DECREFs in error handling code of CALL_FUNCTION
This commit is contained in:
parent
706dbd03bd
commit
387b1011a1
1 changed files with 11 additions and 8 deletions
|
@ -1615,7 +1615,7 @@ eval_code2(co, globals, locals,
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int nstar = 0;
|
int nstar = 0;
|
||||||
PyObject *args;
|
PyObject *callargs;
|
||||||
PyObject *stararg = 0;
|
PyObject *stararg = 0;
|
||||||
PyObject *kwdict = NULL;
|
PyObject *kwdict = NULL;
|
||||||
if (flags & 2) {
|
if (flags & 2) {
|
||||||
|
@ -1678,6 +1678,8 @@ eval_code2(co, globals, locals,
|
||||||
PyErr_Format(PyExc_TypeError,
|
PyErr_Format(PyExc_TypeError,
|
||||||
"keyword parameter redefined: %.400s",
|
"keyword parameter redefined: %.400s",
|
||||||
PyString_AsString(key));
|
PyString_AsString(key));
|
||||||
|
Py_DECREF(key);
|
||||||
|
Py_DECREF(value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
err = PyDict_SetItem(kwdict, key, value);
|
err = PyDict_SetItem(kwdict, key, value);
|
||||||
|
@ -1687,13 +1689,12 @@ eval_code2(co, globals, locals,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (err) {
|
if (err) {
|
||||||
Py_DECREF(args);
|
|
||||||
Py_DECREF(kwdict);
|
Py_DECREF(kwdict);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
args = PyTuple_New(na + nstar);
|
callargs = PyTuple_New(na + nstar);
|
||||||
if (args == NULL) {
|
if (callargs == NULL) {
|
||||||
x = NULL;
|
x = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1702,16 +1703,18 @@ eval_code2(co, globals, locals,
|
||||||
for (i = 0; i < nstar; i++) {
|
for (i = 0; i < nstar; i++) {
|
||||||
PyObject *a = PyTuple_GET_ITEM(stararg, i);
|
PyObject *a = PyTuple_GET_ITEM(stararg, i);
|
||||||
Py_INCREF(a);
|
Py_INCREF(a);
|
||||||
PyTuple_SET_ITEM(args, na + i, a);
|
PyTuple_SET_ITEM(callargs, na + i, a);
|
||||||
}
|
}
|
||||||
Py_DECREF(stararg);
|
Py_DECREF(stararg);
|
||||||
}
|
}
|
||||||
while (--na >= 0) {
|
while (--na >= 0) {
|
||||||
w = POP();
|
w = POP();
|
||||||
PyTuple_SET_ITEM(args, na, w);
|
PyTuple_SET_ITEM(callargs, na, w);
|
||||||
}
|
}
|
||||||
x = PyEval_CallObjectWithKeywords(func, args, kwdict);
|
x = PyEval_CallObjectWithKeywords(func,
|
||||||
Py_DECREF(args);
|
callargs,
|
||||||
|
kwdict);
|
||||||
|
Py_DECREF(callargs);
|
||||||
Py_XDECREF(kwdict);
|
Py_XDECREF(kwdict);
|
||||||
}
|
}
|
||||||
Py_DECREF(func);
|
Py_DECREF(func);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue