For safety, wait to decref deleted values until the deque state has been restored.

This commit is contained in:
Raymond Hettinger 2015-03-21 01:53:16 -07:00
parent 0f6f94778a
commit ac13ad6a32
1 changed files with 4 additions and 4 deletions

View File

@ -864,9 +864,9 @@ deque_remove(dequeobject *deque, PyObject *value)
if (cmp > 0) {
PyObject *tgt = deque_popleft(deque, NULL);
assert (tgt != NULL);
Py_DECREF(tgt);
if (_deque_rotate(deque, i) == -1)
return NULL;
Py_DECREF(tgt);
Py_RETURN_NONE;
}
else if (cmp < 0) {
@ -956,16 +956,16 @@ static int
deque_del_item(dequeobject *deque, Py_ssize_t i)
{
PyObject *item;
int rv;
assert (i >= 0 && i < Py_SIZE(deque));
if (_deque_rotate(deque, -i) == -1)
return -1;
item = deque_popleft(deque, NULL);
rv = _deque_rotate(deque, i);
assert (item != NULL);
Py_DECREF(item);
return _deque_rotate(deque, i);
return rv;
}
static int