[Python-checkins] bpo-38677: Fix arraymodule error handling in module initialization. (GH-17039)

Miss Islington (bot) webhook-mailer at python.org
Fri Nov 15 04:37:33 EST 2019


https://github.com/python/cpython/commit/25ce77dd2455abbb6e2c9e055bbc98954642fa7c
commit: 25ce77dd2455abbb6e2c9e055bbc98954642fa7c
branch: 3.8
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2019-11-15T01:37:26-08:00
summary:

bpo-38677: Fix arraymodule error handling in module initialization. (GH-17039)

(cherry picked from commit b44ffc8b409fd539c5fb2b79385498e9fe168880)

Co-authored-by: Marco Paolini <mpaolini at users.noreply.github.com>

files:
M Modules/arraymodule.c

diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 26c90a8a5983d..5289ea0e91a61 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -3042,9 +3042,15 @@ array_modexec(PyObject *m)
     Py_TYPE(&PyArrayIter_Type) = &PyType_Type;
 
     Py_INCREF((PyObject *)&Arraytype);
-    PyModule_AddObject(m, "ArrayType", (PyObject *)&Arraytype);
+    if (PyModule_AddObject(m, "ArrayType", (PyObject *)&Arraytype) < 0) {
+        Py_DECREF((PyObject *)&Arraytype);
+        return -1;
+    }
     Py_INCREF((PyObject *)&Arraytype);
-    PyModule_AddObject(m, "array", (PyObject *)&Arraytype);
+    if (PyModule_AddObject(m, "array", (PyObject *)&Arraytype) < 0) {
+        Py_DECREF((PyObject *)&Arraytype);
+        return -1;
+    }
 
     for (descr=descriptors; descr->typecode != '\0'; descr++) {
         size++;
@@ -3055,13 +3061,11 @@ array_modexec(PyObject *m)
         *p++ = (char)descr->typecode;
     }
     typecodes = PyUnicode_DecodeASCII(buffer, p - buffer, NULL);
-
-    PyModule_AddObject(m, "typecodes", typecodes);
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(m);
-        m = NULL;
+    if (PyModule_AddObject(m, "typecodes", typecodes) < 0) {
+        Py_XDECREF(typecodes);
+        return -1;
     }
+
     return 0;
 }
 



More information about the Python-checkins mailing list