[Python-checkins] r53300 - in python/trunk: Lib/test/test_deque.py Modules/collectionsmodule.c
raymond.hettinger
python-checkins at python.org
Mon Jan 8 19:09:21 CET 2007
Author: raymond.hettinger
Date: Mon Jan 8 19:09:20 2007
New Revision: 53300
Modified:
python/trunk/Lib/test/test_deque.py
python/trunk/Modules/collectionsmodule.c
Log:
Fix zero-length corner case for iterating over a mutating deque.
Modified: python/trunk/Lib/test/test_deque.py
==============================================================================
--- python/trunk/Lib/test/test_deque.py (original)
+++ python/trunk/Lib/test/test_deque.py Mon Jan 8 19:09:20 2007
@@ -396,6 +396,12 @@
d.pop()
self.assertRaises(RuntimeError, it.next)
+ def test_runtime_error_on_empty_deque(self):
+ d = deque()
+ it = iter(d)
+ d.append(10)
+ self.assertRaises(RuntimeError, it.next)
+
class Deque(deque):
pass
Modified: python/trunk/Modules/collectionsmodule.c
==============================================================================
--- python/trunk/Modules/collectionsmodule.c (original)
+++ python/trunk/Modules/collectionsmodule.c Mon Jan 8 19:09:20 2007
@@ -911,15 +911,14 @@
{
PyObject *item;
- if (it->counter == 0)
- return NULL;
-
if (it->deque->state != it->state) {
it->counter = 0;
PyErr_SetString(PyExc_RuntimeError,
"deque mutated during iteration");
return NULL;
}
+ if (it->counter == 0)
+ return NULL;
assert (!(it->b == it->deque->rightblock &&
it->index > it->deque->rightindex));
More information about the Python-checkins
mailing list