summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFacundo Batista <facundobatista@gmail.com>2008-06-25 19:24:53 (GMT)
committerFacundo Batista <facundobatista@gmail.com>2008-06-25 19:24:53 (GMT)
commit68dc052ca6183b9225d143c91557525bc0b23d98 (patch)
tree1d591312395521884935f74b14afb1780319eee8
parent1b6c4c80a3e4be52977a157c06aff06aacd4d2a8 (diff)
downloadcpython-68dc052ca6183b9225d143c91557525bc0b23d98.zip
cpython-68dc052ca6183b9225d143c91557525bc0b23d98.tar.gz
cpython-68dc052ca6183b9225d143c91557525bc0b23d98.tar.bz2
Reverting the patch from #3165, as it broke other
behaviours. I left the original test commented out (note that that test came from #2702, which seems to have a problem in FreeBSD and Windows, but not in Linux). I included a new test, to watch over the now-broken behaviour, I took it from #3179.
-rw-r--r--Lib/test/test_cpickle.py32
-rw-r--r--Modules/cPickle.c4
2 files changed, 22 insertions, 14 deletions
diff --git a/Lib/test/test_cpickle.py b/Lib/test/test_cpickle.py
index 7f6c35a..7d3fc97 100644
--- a/Lib/test/test_cpickle.py
+++ b/Lib/test/test_cpickle.py
@@ -94,16 +94,28 @@ class Node(object):
pass
class cPickleDeepRecursive(unittest.TestCase):
- '''Issue 2702. This should raise a RecursionLimit but in some
- platforms (FreeBSD, win32) sometimes raises KeyError instead,
- or just silently terminates the interpreter (=crashes).
- '''
- def test_deep_recursive(self):
- nodes = [Node() for i in range(500)]
- for n in nodes:
- n.connections = list(nodes)
- n.connections.remove(n)
- self.assertRaises(RuntimeError, cPickle.dumps, n)
+# I commented out, because the patch that fixes this was reverted, as
+# it broke the next test case. Check the issues for full history.
+# def test_issue2702(self):
+# '''This should raise a RecursionLimit but in some
+# platforms (FreeBSD, win32) sometimes raises KeyError instead,
+# or just silently terminates the interpreter (=crashes).
+# '''
+# nodes = [Node() for i in range(500)]
+# for n in nodes:
+# n.connections = list(nodes)
+# n.connections.remove(n)
+# self.assertRaises(RuntimeError, cPickle.dumps, n)
+
+ def test_issue3179(self):
+ '''Safe test, because of I broken this case when fixing the
+ behaviour for the previous test.
+ '''
+ res=[]
+ for x in range(1,2000):
+ res.append(dict(doc=x, similar=[]))
+ cPickle.dumps(res)
+
def test_main():
test_support.run_unittest(
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index 98a2b87..afa75fd 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -1523,8 +1523,6 @@ batch_list(Picklerobject *self, PyObject *iter)
static char append = APPEND;
static char appends = APPENDS;
- self->nesting++;
-
assert(iter != NULL);
if (self->proto == 0) {
@@ -1664,8 +1662,6 @@ batch_dict(Picklerobject *self, PyObject *iter)
static char setitem = SETITEM;
static char setitems = SETITEMS;
- self->nesting++;
-
assert(iter != NULL);
if (self->proto == 0) {