diff options
author | Raymond Hettinger <python@rcn.com> | 2015-03-21 08:53:16 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2015-03-21 08:53:16 (GMT) |
commit | ac13ad6a32e5c130de91fc2038de9b1c265b3fe9 (patch) | |
tree | 48ee3ad9d130d307c2a1f455251d3d729cd89a9c /Modules/_collectionsmodule.c | |
parent | 0f6f94778a7cad295c48a082602603795aeee3ba (diff) | |
download | cpython-ac13ad6a32e5c130de91fc2038de9b1c265b3fe9.zip cpython-ac13ad6a32e5c130de91fc2038de9b1c265b3fe9.tar.gz cpython-ac13ad6a32e5c130de91fc2038de9b1c265b3fe9.tar.bz2 |
For safety, wait to decref deleted values until the deque state has been restored.
Diffstat (limited to 'Modules/_collectionsmodule.c')
-rw-r--r-- | Modules/_collectionsmodule.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 7d7f0cf..28aacc3 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -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 |