]> granicus.if.org Git - python/commitdiff
Fix bug 1604. deque.__init__() did not clear existing contents like list.__init__...
authorRaymond Hettinger <python@rcn.com>
Thu, 13 Dec 2007 00:08:37 +0000 (00:08 +0000)
committerRaymond Hettinger <python@rcn.com>
Thu, 13 Dec 2007 00:08:37 +0000 (00:08 +0000)
Lib/test/test_deque.py
Misc/NEWS
Modules/_collectionsmodule.c

index aeb6d17d5f99209c31770e2a2c1f12ab34b06a39..e0ca746cd09713ae27fcdf22adc9c7c89e4b9b21 100644 (file)
@@ -29,8 +29,8 @@ class MutateCmp:
 class TestBasic(unittest.TestCase):
 
     def test_basics(self):
-        d = deque(xrange(100))
-        d.__init__(xrange(100, 200))
+        d = deque(xrange(-5125, -5000))
+        d.__init__(xrange(200))
         for i in xrange(200, 400):
             d.append(i)
         for i in reversed(xrange(-200, 0)):
@@ -451,8 +451,8 @@ class DequeWithBadIter(deque):
 class TestSubclass(unittest.TestCase):
 
     def test_basics(self):
-        d = Deque(xrange(100))
-        d.__init__(xrange(100, 200))
+        d = Deque(xrange(25))
+        d.__init__(xrange(200))
         for i in xrange(200, 400):
             d.append(i)
         for i in reversed(xrange(-200, 0)):
index 679f1fe3cef41c79c3c0b0f5d3ce0170ccc38480..7dae508ec22dfd3ca946b848d8cf899327e3dd53 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -881,6 +881,10 @@ Library
 Extension Modules
 -----------------
 
+- Bug #1604: collections.deque.__init__(iterable) now clears any prior contents
+  before adding elements from the iterable.  This fix brings the behavior into
+  line with that for list.__init__().
+
 - Added wide char functions to msvcrt module: getwch, getwche, putwch and
   ungetwch. The functions accept or return unicode.
 
index e5c32182124eb810330f16409fccbb5967b4b2cd..9efbc27ae03ba11de66fbdcbea67d7081b478015 100644 (file)
@@ -843,6 +843,7 @@ deque_init(dequeobject *deque, PyObject *args, PyObject *kwdargs)
                }
        }
        deque->maxlen = maxlen;
+       deque_clear(deque);
        if (iterable != NULL) {
                PyObject *rv = deque_extend(deque, iterable);
                if (rv == NULL)