diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2000-03-31 01:22:54 (GMT) |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2000-03-31 01:22:54 (GMT) |
commit | 387b1011a161bee651323556b0d7312f3b15324a (patch) | |
tree | a858127dd97bb10e741f9f184897b12d72fd666f | |
parent | 706dbd03bd8d51702401e6e55245938291f05a19 (diff) | |
download | cpython-387b1011a161bee651323556b0d7312f3b15324a.zip cpython-387b1011a161bee651323556b0d7312f3b15324a.tar.gz cpython-387b1011a161bee651323556b0d7312f3b15324a.tar.bz2 |
rename args variable in CALL_FUNCTION to callargs (avoids name
override)
add missing DECREFs in error handling code of CALL_FUNCTION
-rw-r--r-- | Python/ceval.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index 6b3b257..5213172 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1615,7 +1615,7 @@ eval_code2(co, globals, locals, } else { int nstar = 0; - PyObject *args; + PyObject *callargs; PyObject *stararg = 0; PyObject *kwdict = NULL; if (flags & 2) { @@ -1678,6 +1678,8 @@ eval_code2(co, globals, locals, PyErr_Format(PyExc_TypeError, "keyword parameter redefined: %.400s", PyString_AsString(key)); + Py_DECREF(key); + Py_DECREF(value); break; } err = PyDict_SetItem(kwdict, key, value); @@ -1687,13 +1689,12 @@ eval_code2(co, globals, locals, break; } if (err) { - Py_DECREF(args); Py_DECREF(kwdict); break; } } - args = PyTuple_New(na + nstar); - if (args == NULL) { + callargs = PyTuple_New(na + nstar); + if (callargs == NULL) { x = NULL; break; } @@ -1702,16 +1703,18 @@ eval_code2(co, globals, locals, for (i = 0; i < nstar; i++) { PyObject *a = PyTuple_GET_ITEM(stararg, i); Py_INCREF(a); - PyTuple_SET_ITEM(args, na + i, a); + PyTuple_SET_ITEM(callargs, na + i, a); } Py_DECREF(stararg); } while (--na >= 0) { w = POP(); - PyTuple_SET_ITEM(args, na, w); + PyTuple_SET_ITEM(callargs, na, w); } - x = PyEval_CallObjectWithKeywords(func, args, kwdict); - Py_DECREF(args); + x = PyEval_CallObjectWithKeywords(func, + callargs, + kwdict); + Py_DECREF(callargs); Py_XDECREF(kwdict); } Py_DECREF(func); |