From: Eli Bendersky Date: Sat, 18 May 2013 14:52:34 +0000 (-0700) Subject: Issue #17989: element_setattro returned incorrect error value. X-Git-Tag: v3.4.0a1~695^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ef9683b73f8980fb7cfa39166670d3998b092804;p=thirdparty%2FPython%2Fcpython.git Issue #17989: element_setattro returned incorrect error value. This caused an exception to be raised later than expected. --- diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index 86fdd2f1db9d..9caef99ea6a6 100644 --- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -1808,17 +1808,16 @@ element_getattro(ElementObject* self, PyObject* nameobj) return res; } -static PyObject* +static int element_setattro(ElementObject* self, PyObject* nameobj, PyObject* value) { char *name = ""; if (PyUnicode_Check(nameobj)) name = _PyUnicode_AsString(nameobj); - if (name == NULL) - return NULL; - - if (strcmp(name, "tag") == 0) { + if (name == NULL) { + return -1; + } else if (strcmp(name, "tag") == 0) { Py_DECREF(self->tag); self->tag = value; Py_INCREF(self->tag); @@ -1837,11 +1836,12 @@ element_setattro(ElementObject* self, PyObject* nameobj, PyObject* value) self->extra->attrib = value; Py_INCREF(self->extra->attrib); } else { - PyErr_SetString(PyExc_AttributeError, name); - return NULL; + PyErr_SetString(PyExc_AttributeError, + "Can't set arbitraty attributes on Element"); + return -1; } - return NULL; + return 0; } static PySequenceMethods element_as_sequence = {