Revert c9674421d78e, leaving an additional comment
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
index 5a1ed8c..f5b0914 100644
--- a/Modules/_elementtree.c
+++ b/Modules/_elementtree.c
@@ -278,25 +278,30 @@
 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;
 }