[Python-checkins] bpo-38677: Fix arraymodule error handling in module initialization. (GH-17039)
Serhiy Storchaka
webhook-mailer at python.org
Fri Nov 15 03:43:35 EST 2019
https://github.com/python/cpython/commit/b44ffc8b409fd539c5fb2b79385498e9fe168880
commit: b44ffc8b409fd539c5fb2b79385498e9fe168880
branch: master
author: Marco Paolini <mpaolini at users.noreply.github.com>
committer: Serhiy Storchaka <storchaka at gmail.com>
date: 2019-11-15T10:42:51+02:00
summary:
bpo-38677: Fix arraymodule error handling in module initialization. (GH-17039)
files:
M Modules/arraymodule.c
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 5ba261819db2c..1ceba9e63cbdf 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -3040,9 +3040,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++;
@@ -3053,13 +3059,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