Commit bf9b2446 authored by Tim Peters's avatar Tim Peters

slot_sq_contains(): This leaked a reference to the result of calling

__contains__().

Bugfix candidate.
parent 36eb4dfb
......@@ -4016,10 +4016,11 @@ static int
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)
......@@ -4029,16 +4030,16 @@ slot_sq_contains(PyObject *self, PyObject *value)
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,
}
else if (! PyErr_Occurred()) {
result = _PySequence_IterSearch(self, value,
PY_ITERSEARCH_CONTAINS);
}
return result;
}
SLOT1(slot_sq_inplace_concat, "__iadd__", PyObject *, "O")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment