diff options
author | Eli Bendersky <eliben@gmail.com> | 2013-01-12 13:42:38 (GMT) |
---|---|---|
committer | Eli Bendersky <eliben@gmail.com> | 2013-01-12 13:42:38 (GMT) |
commit | 799e3edaf762baafaff8386dc8d5cdf078f80805 (patch) | |
tree | 20a280db1959206c9c30f4735397f01b71cbed4b /Modules | |
parent | b8f6dc855cc3c29fde1cb410cd0e7e316e9a3a94 (diff) | |
download | cpython-799e3edaf762baafaff8386dc8d5cdf078f80805.zip cpython-799e3edaf762baafaff8386dc8d5cdf078f80805.tar.gz cpython-799e3edaf762baafaff8386dc8d5cdf078f80805.tar.bz2 |
Issue #16076: check for return value of PyTuple_New for args (following
Coverity report) and cleanup code.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_elementtree.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index 8cc9803..3f357b0 100644 --- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -950,19 +950,22 @@ element_setstate_from_Python(ElementObject *self, PyObject *state) PICKLED_TAIL, PICKLED_CHILDREN, 0}; PyObject *args; PyObject *tag, *attrib, *text, *tail, *children; - int error; + PyObject *retval; - /* More instance dict members than we know to handle? */ tag = attrib = text = tail = children = NULL; args = PyTuple_New(0); - error = ! PyArg_ParseTupleAndKeywords(args, state, "|$OOOOO", kwlist, &tag, - &attrib, &text, &tail, &children); - Py_DECREF(args); - if (error) + if (!args) return NULL; + + if (PyArg_ParseTupleAndKeywords(args, state, "|$OOOOO", kwlist, &tag, + &attrib, &text, &tail, &children)) + retval = element_setstate_from_attributes(self, tag, attrib, text, + tail, children); else - return element_setstate_from_attributes(self, tag, attrib, text, - tail, children); + retval = NULL; + + Py_DECREF(args); + return retval; } static PyObject * |