Mercurial > cpython-lru_cache-weakref
diff Python/bltinmodule.c @ 78603:ba1c48f8b571 2.7
Issue #15604: Update uses of PyObject_IsTrue() to check for and handle errors correctly.
Patch by Serhiy Storchaka.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Wed, 15 Aug 2012 23:16:51 +0200 |
| parents | 751f28564a45 |
| children | 2b4f6770877e |
line wrap: on
line diff
--- a/Python/bltinmodule.c Wed Aug 15 21:37:19 2012 +0200 +++ b/Python/bltinmodule.c Wed Aug 15 23:16:51 2012 +0200 @@ -313,7 +313,7 @@ ok = PyObject_IsTrue(good); Py_DECREF(good); } - if (ok) { + if (ok > 0) { if (j < len) PyList_SET_ITEM(result, j, item); else { @@ -324,8 +324,11 @@ } ++j; } - else + else { Py_DECREF(item); + if (ok < 0) + goto Fail_result_it; + } } @@ -2784,12 +2787,15 @@ } ok = PyObject_IsTrue(good); Py_DECREF(good); - if (ok) { + if (ok > 0) { if (PyTuple_SetItem(result, j++, item) < 0) goto Fail_1; } - else + else { Py_DECREF(item); + if (ok < 0) + goto Fail_1; + } } if (_PyTuple_Resize(&result, j) < 0) @@ -2851,7 +2857,7 @@ ok = PyObject_IsTrue(good); Py_DECREF(good); } - if (ok) { + if (ok > 0) { Py_ssize_t reslen; if (!PyString_Check(item)) { PyErr_SetString(PyExc_TypeError, "can't filter str to str:" @@ -2917,6 +2923,8 @@ } } Py_DECREF(item); + if (ok < 0) + goto Fail_1; } if (j < outlen) @@ -2977,7 +2985,7 @@ ok = PyObject_IsTrue(good); Py_DECREF(good); } - if (ok) { + if (ok > 0) { Py_ssize_t reslen; if (!PyUnicode_Check(item)) { PyErr_SetString(PyExc_TypeError, @@ -3032,6 +3040,8 @@ } } Py_DECREF(item); + if (ok < 0) + goto Fail_1; } if (j < outlen)
