From 68dc052ca6183b9225d143c91557525bc0b23d98 Mon Sep 17 00:00:00 2001 From: Facundo Batista Date: Wed, 25 Jun 2008 19:24:53 +0000 Subject: [PATCH] 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. --- Lib/test/test_cpickle.py | 32 ++++++++++++++++++++++---------- Modules/cPickle.c | 4 ---- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/Lib/test/test_cpickle.py b/Lib/test/test_cpickle.py index 7f6c35aeffc..7d3fc97df93 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 98a2b875710..afa75fd5fe3 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) {