diff options
author | Facundo Batista <facundobatista@gmail.com> | 2008-06-25 19:24:53 (GMT) |
---|---|---|
committer | Facundo Batista <facundobatista@gmail.com> | 2008-06-25 19:24:53 (GMT) |
commit | 68dc052ca6183b9225d143c91557525bc0b23d98 (patch) | |
tree | 1d591312395521884935f74b14afb1780319eee8 | |
parent | 1b6c4c80a3e4be52977a157c06aff06aacd4d2a8 (diff) | |
download | cpython-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.py | 32 | ||||
-rw-r--r-- | 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 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) { |