From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Fri, 15 Nov 2019 09:37:26 +0000 (-0800) Subject: bpo-38677: Fix arraymodule error handling in module initialization. (GH-17039) X-Git-Tag: v3.8.1rc1~85 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=25ce77dd2455abbb6e2c9e055bbc98954642fa7c;p=thirdparty%2FPython%2Fcpython.git bpo-38677: Fix arraymodule error handling in module initialization. (GH-17039) (cherry picked from commit b44ffc8b409fd539c5fb2b79385498e9fe168880) Co-authored-by: Marco Paolini --- diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index 26c90a8a5983..5289ea0e91a6 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; }