summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2007-12-13 00:08:37 +0000
committerRaymond Hettinger <python@rcn.com>2007-12-13 00:08:37 +0000
commitadf9ffdfbe0fb00f5a47444c1dc53eb280d0bd0a (patch)
treed006a49e33601df220458519b651e15660108b26
parent842c178442a9b9b855d9773dbe2e8ac3d6d79895 (diff)
downloadcpython-git-adf9ffdfbe0fb00f5a47444c1dc53eb280d0bd0a.tar.gz
Fix bug 1604. deque.__init__() did not clear existing contents like list.__init__. Not a backport candidate.
-rw-r--r--Lib/test/test_deque.py8
-rw-r--r--Misc/NEWS4
-rw-r--r--Modules/_collectionsmodule.c1
3 files changed, 9 insertions, 4 deletions
diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py
index aeb6d17d5f..e0ca746cd0 100644
--- a/Lib/test/test_deque.py
+++ b/Lib/test/test_deque.py
@@ -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)):
diff --git a/Misc/NEWS b/Misc/NEWS
index 679f1fe3ce..7dae508ec2 100644
--- 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.
diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c
index e5c3218212..9efbc27ae0 100644
--- a/Modules/_collectionsmodule.c
+++ b/Modules/_collectionsmodule.c
@@ -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)