Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r49529:612f7784a228
Date: 2011-11-18 16:43 +0100
http://bitbucket.org/pypy/pypy/changeset/612f7784a228/

Log:    Test for crashes when we call StringBuilder.build() several times
        over a growing builder, like W_StringBufferObject does.

diff --git a/pypy/translator/c/test/test_newgc.py 
b/pypy/translator/c/test/test_newgc.py
--- a/pypy/translator/c/test/test_newgc.py
+++ b/pypy/translator/c/test/test_newgc.py
@@ -1318,6 +1318,23 @@
         res = self.run('string_builder_over_allocation')
         assert res[1000] == 'y'
 
+    def definestr_string_builder_multiple_builds(cls):
+        import gc
+        def fn(_):
+            s = StringBuilder(4)
+            got = []
+            for i in range(50):
+                s.append(chr(i))
+                got.append(s.build())
+                gc.collect()
+            return '/'.join(got)
+        return fn
+
+    def test_string_builder_multiple_builds(self):
+        res = self.run('string_builder_multiple_builds')
+        assert res == '/'.join([''.join(map(chr, range(length)))
+                                for length in range(1, 51)])
+
     def define_nursery_hash_base(cls):
         from pypy.rlib.objectmodel import compute_identity_hash
         class A:
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to