[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

AltStyle によって変換されたページ (->オリジナル) /