]> granicus.if.org Git - python/commitdiff
Reverting the patch from #3165, as it broke other
authorFacundo Batista <facundobatista@gmail.com>
Wed, 25 Jun 2008 19:24:53 +0000 (19:24 +0000)
committerFacundo Batista <facundobatista@gmail.com>
Wed, 25 Jun 2008 19:24:53 +0000 (19:24 +0000)
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
Modules/cPickle.c

index 7f6c35aeffc020843863bdf5b376d4a9b503b6d2..7d3fc97df93c88c0e544d1afa628664e14d79b7c 100644 (file)
@@ -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(
index 98a2b875710adda0ce53c49ba204a750f99cb80c..afa75fd5fe36ff2931e91cc26340c78a429f411c 100644 (file)
@@ -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) {