From 799e3edaf762baafaff8386dc8d5cdf078f80805 Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Sat, 12 Jan 2013 05:42:38 -0800 Subject: [PATCH] Issue #16076: check for return value of PyTuple_New for args (following Coverity report) and cleanup code. --- Modules/_elementtree.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index 8cc98031ca1..3f357b0275f 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 *