Commit 9f9eaae5 authored by Jeremy Hylton's avatar Jeremy Hylton

rename args variable in CALL_FUNCTION to callargs (avoids name

override)

add missing DECREFs in error handling code of CALL_FUNCTION
parent cdd3b87e
...@@ -1615,7 +1615,7 @@ eval_code2(co, globals, locals, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment