Mercurial > cpython-lru_cache-weakref
diff Objects/typeobject.c @ 28395:1e0e67947175 2.2
Backport Tim's checkin 2.218:
slot_sq_contains(): This leaked a reference to the result of calling
__contains__().
| author | Neal Norwitz <nnorwitz@gmail.com> |
|---|---|
| date | Sun, 23 Mar 2003 14:36:50 +0000 |
| parents | 83701fab32fe |
| children | 91130a4cc1ce |
line wrap: on
line diff
--- a/Objects/typeobject.c Sun Mar 23 14:32:56 2003 +0000 +++ b/Objects/typeobject.c Sun Mar 23 14:36:50 2003 +0000 @@ -3025,10 +3025,11 @@ slot_sq_contains(PyObject *self, PyObject *value) { PyObject *func, *res, *args; + int result = -1; + static PyObject *contains_str; func = lookup_maybe(self, "__contains__", &contains_str); - if (func != NULL) { args = Py_BuildValue("(O)", value); if (args == NULL) @@ -3038,16 +3039,16 @@ Py_DECREF(args); } Py_DECREF(func); - if (res == NULL) - return -1; - return PyObject_IsTrue(res); + if (res != NULL) { + result = PyObject_IsTrue(res); + Py_DECREF(res); + } } - else if (PyErr_Occurred()) - return -1; - else { - return _PySequence_IterSearch(self, value, - PY_ITERSEARCH_CONTAINS); + else if (! PyErr_Occurred()) { + result = _PySequence_IterSearch(self, value, + PY_ITERSEARCH_CONTAINS); } + return result; } SLOT1(slot_sq_inplace_concat, "__iadd__", PyObject *, "O")
