From ef9683b73f8980fb7cfa39166670d3998b092804 Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Sat, 18 May 2013 07:52:34 -0700 Subject: [PATCH] Issue #17989: element_setattro returned incorrect error value. This caused an exception to be raised later than expected. --- Modules/_elementtree.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index 86fdd2f1db9..9caef99ea6a 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 = {