mirror of
https://github.com/python/cpython.git
synced 2025-12-11 03:20:01 +00:00
For safety, wait to decref deleted values until the deque state has been restored.
This commit is contained in:
parent
0f6f94778a
commit
ac13ad6a32
1 changed files with 4 additions and 4 deletions
|
|
@ -864,9 +864,9 @@ deque_remove(dequeobject *deque, PyObject *value)
|
||||||
if (cmp > 0) {
|
if (cmp > 0) {
|
||||||
PyObject *tgt = deque_popleft(deque, NULL);
|
PyObject *tgt = deque_popleft(deque, NULL);
|
||||||
assert (tgt != NULL);
|
assert (tgt != NULL);
|
||||||
Py_DECREF(tgt);
|
|
||||||
if (_deque_rotate(deque, i) == -1)
|
if (_deque_rotate(deque, i) == -1)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Py_DECREF(tgt);
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
}
|
}
|
||||||
else if (cmp < 0) {
|
else if (cmp < 0) {
|
||||||
|
|
@ -956,16 +956,16 @@ static int
|
||||||
deque_del_item(dequeobject *deque, Py_ssize_t i)
|
deque_del_item(dequeobject *deque, Py_ssize_t i)
|
||||||
{
|
{
|
||||||
PyObject *item;
|
PyObject *item;
|
||||||
|
int rv;
|
||||||
|
|
||||||
assert (i >= 0 && i < Py_SIZE(deque));
|
assert (i >= 0 && i < Py_SIZE(deque));
|
||||||
if (_deque_rotate(deque, -i) == -1)
|
if (_deque_rotate(deque, -i) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
item = deque_popleft(deque, NULL);
|
item = deque_popleft(deque, NULL);
|
||||||
|
rv = _deque_rotate(deque, i);
|
||||||
assert (item != NULL);
|
assert (item != NULL);
|
||||||
Py_DECREF(item);
|
Py_DECREF(item);
|
||||||
|
return rv;
|
||||||
return _deque_rotate(deque, i);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue