]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-40024: Update _elementtree to use PyModule_AddType() (GH-19205)
authorDong-hee Na <donghee.na92@gmail.com>
Sun, 29 Mar 2020 14:12:11 +0000 (23:12 +0900)
committerGitHub <noreply@github.com>
Sun, 29 Mar 2020 14:12:11 +0000 (16:12 +0200)
Modules/_elementtree.c

index d2cad894481143014b4928ce905bb45a8c63d4b1..49c372d86b02b3425d013c973f7bf172de6c3487 100644 (file)
@@ -4419,16 +4419,22 @@ PyInit__elementtree(void)
         "xml.etree.ElementTree.ParseError", PyExc_SyntaxError, NULL
         );
     Py_INCREF(st->parseerror_obj);
-    PyModule_AddObject(m, "ParseError", st->parseerror_obj);
-
-    Py_INCREF((PyObject *)&Element_Type);
-    PyModule_AddObject(m, "Element", (PyObject *)&Element_Type);
+    if (PyModule_AddObject(m, "ParseError", st->parseerror_obj) < 0) {
+        Py_DECREF(st->parseerror_obj);
+        return NULL;
+    }
 
-    Py_INCREF((PyObject *)&TreeBuilder_Type);
-    PyModule_AddObject(m, "TreeBuilder", (PyObject *)&TreeBuilder_Type);
+    PyTypeObject *types[] = {
+        &Element_Type,
+        &TreeBuilder_Type,
+        &XMLParser_Type
+    };
 
-    Py_INCREF((PyObject *)&XMLParser_Type);
-    PyModule_AddObject(m, "XMLParser", (PyObject *)&XMLParser_Type);
+    for (size_t i = 0; i < Py_ARRAY_LENGTH(types); i++) {
+        if (PyModule_AddType(m, types[i]) < 0) {
+            return NULL;
+        }
+    }
 
     return m;
 }