changeset: 102840:7d90bf4780ff parent: 102838:2e23f7b9515c parent: 102839:51627344fc58 user: Berker Peksag date: Mon Aug 22 18:07:02 2016 +0300 files: Misc/NEWS Python/pystate.c description: Issue #27587: Merge from 3.5 diff -r 2e23f7b9515c -r 7d90bf4780ff Misc/NEWS --- a/Misc/NEWS Mon Aug 22 14:29:54 2016 +0200 +++ b/Misc/NEWS Mon Aug 22 18:07:02 2016 +0300 @@ -10,6 +10,10 @@ Core and Builtins ----------------- +- Issue #27587: Fix another issue found by PVS-Studio: Null pointer check + after use of 'def' in _PyState_AddModule(). + Initial patch by Christian Heimes. + - Issue #27792: The modulo operation applied to ``bool`` and other ``int`` subclasses now always returns an ``int``. Previously the return type depended on the input values. Patch by Xiang Zhang. diff -r 2e23f7b9515c -r 7d90bf4780ff Python/pystate.c --- a/Python/pystate.c Mon Aug 22 14:29:54 2016 +0200 +++ b/Python/pystate.c Mon Aug 22 18:07:02 2016 +0300 @@ -285,14 +285,16 @@ _PyState_AddModule(PyObject* module, struct PyModuleDef* def) { PyInterpreterState *state; + if (!def) { + assert(PyErr_Occurred()); + return -1; + } if (def->m_slots) { PyErr_SetString(PyExc_SystemError, "PyState_AddModule called on module with slots"); return -1; } state = GET_INTERP_STATE(); - if (!def) - return -1; if (!state->modules_by_index) { state->modules_by_index = PyList_New(0); if (!state->modules_by_index)