[pypy-commit] pypy py3.5: add check lock to impl of deque.index
plan_rich
pypy.commits at gmail.com
Mon Oct 17 08:20:57 EDT 2016
Author: Richard Plangger <planrichi at gmail.com>
Branch: py3.5
Changeset: r87836:e5f49cf46985
Date: 2016-10-17 14:19 +0200
http://bitbucket.org/pypy/pypy/changeset/e5f49cf46985/
Log: add check lock to impl of deque.index
diff --git a/pypy/module/_collections/interp_deque.py b/pypy/module/_collections/interp_deque.py
--- a/pypy/module/_collections/interp_deque.py
+++ b/pypy/module/_collections/interp_deque.py
@@ -334,6 +334,7 @@
_len = self.len
start = 0
stop = _len
+ lock = self.getlock()
if w_start is not None:
start = space.int_w(w_start)
@@ -358,6 +359,7 @@
continue
if space.eq_w(w_obj, w_x):
return space.wrap(i)
+ self.checklock(lock)
except OperationError as e:
if not e.match(space, space.w_StopIteration):
raise
diff --git a/pypy/module/_collections/test/test_deque.py b/pypy/module/_collections/test/test_deque.py
--- a/pypy/module/_collections/test/test_deque.py
+++ b/pypy/module/_collections/test/test_deque.py
@@ -362,3 +362,21 @@
d = deque(range(10))
d.insert(-1, 500)
assert d.index(500) == 9
+
+ def test_deque_raises_runtimeerror(self):
+ from _collections import deque
+ n = 200
+ class MutateCmp:
+ def __init__(self, deque, result):
+ self.deque = deque
+ self.result = result
+ def __eq__(self, other):
+ self.deque.clear()
+ return self.result
+ d = deque(range(n))
+ d[n//2] = MutateCmp(d, False)
+ try:
+ d.index(n)
+ assert 0, "must raise!"
+ except RuntimeError:
+ pass
More information about the pypy-commit
mailing list