Commit 6240cb24 authored by Neal Norwitz's avatar Neal Norwitz

nextlink can be NULL if teedataobject_new fails, so use XINCREF.

Ensure that dataobj is never NULL.

Reported by Klocwork #102
parent ae31085e
......@@ -357,7 +357,7 @@ teedataobject_jumplink(teedataobject *tdo)
{
if (tdo->nextlink == NULL)
tdo->nextlink = teedataobject_new(tdo->it);
Py_INCREF(tdo->nextlink);
Py_XINCREF(tdo->nextlink);
return tdo->nextlink;
}
......@@ -468,7 +468,7 @@ tee_next(teeobject *to)
if (to->index >= LINKCELLS) {
link = teedataobject_jumplink(to->dataobj);
Py_XDECREF(to->dataobj);
Py_DECREF(to->dataobj);
to->dataobj = (teedataobject *)link;
to->index = 0;
}
......@@ -522,6 +522,12 @@ tee_fromiterable(PyObject *iterable)
if (to == NULL)
goto done;
to->dataobj = (teedataobject *)teedataobject_new(it);
if (!to->dataobj) {
PyObject_GC_Del(to);
to = NULL;
goto done;
}
to->index = 0;
to->weakreflist = NULL;
PyObject_GC_Track(to);
......
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