]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Revert c9674421d78e, leaving an additional comment
authorEli Bendersky <eliben@gmail.com>
Wed, 24 Apr 2013 12:34:07 +0000 (05:34 -0700)
committerEli Bendersky <eliben@gmail.com>
Wed, 24 Apr 2013 12:34:07 +0000 (05:34 -0700)
Modules/_elementtree.c

index 5a1ed8c284d230329fa522d1e654ebfd942993e4..f5b0914720c63cf935459580e09853d6f05d13b4 100644 (file)
@@ -278,25 +278,30 @@ element_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
 static PyObject*
 get_attrib_from_keywords(PyObject *kwds)
 {
-    const char* ATTRIB_KEY = "attrib";
-    PyObject *attrib = PyDict_GetItemString(kwds, ATTRIB_KEY);
+    PyObject *attrib_str = PyUnicode_FromString("attrib");
+    PyObject *attrib = PyDict_GetItem(kwds, attrib_str);
 
     if (attrib) {
         /* If attrib was found in kwds, copy its value and remove it from
          * kwds
          */
         if (!PyDict_Check(attrib)) {
+            Py_DECREF(attrib_str);
             PyErr_Format(PyExc_TypeError, "attrib must be dict, not %.100s",
                          Py_TYPE(attrib)->tp_name);
             return NULL;
         }
         attrib = PyDict_Copy(attrib);
-        PyDict_DelItemString(kwds, ATTRIB_KEY);
+        PyDict_DelItem(kwds, attrib_str);
     } else {
         attrib = PyDict_New();
     }
-    assert(attrib);
-    PyDict_Update(attrib, kwds);
+
+    Py_DECREF(attrib_str);
+
+    /* attrib can be NULL if PyDict_New failed */
+    if (attrib)
+        PyDict_Update(attrib, kwds);
     return attrib;
 }