Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r90668:5fd8b95992bb
Date: 2017-03-14 08:35 +0100
http://bitbucket.org/pypy/pypy/changeset/5fd8b95992bb/

Log:    Fix (test by running "py.test -A" on pypy enough times until it
        crashes, with options like MALLOC_CHECK_=7 to detect writes out of
        bound)

diff --git a/pypy/module/cpyext/test/test_tupleobject.py 
b/pypy/module/cpyext/test/test_tupleobject.py
--- a/pypy/module/cpyext/test/test_tupleobject.py
+++ b/pypy/module/cpyext/test/test_tupleobject.py
@@ -154,5 +154,10 @@
 
     def test_tuple_subclass(self):
         module = self.import_module(name='foo')
-        a = module.TupleLike([1, 2, 3])
+        a = module.TupleLike(range(100, 400, 100))
         assert module.is_TupleLike(a) == 1
+        assert isinstance(a, tuple)
+        assert issubclass(type(a), tuple)
+        assert list(a) == range(100, 400, 100)
+        assert list(a) == range(100, 400, 100)
+        assert list(a) == range(100, 400, 100)
diff --git a/pypy/module/cpyext/typeobject.py b/pypy/module/cpyext/typeobject.py
--- a/pypy/module/cpyext/typeobject.py
+++ b/pypy/module/cpyext/typeobject.py
@@ -418,8 +418,8 @@
 
 def inherit_special(space, pto, base_pto):
     # XXX missing: copy basicsize and flags in a magical way
-    # (minimally, if tp_basicsize is zero we copy it from the base)
-    if not pto.c_tp_basicsize:
+    # (minimally, if tp_basicsize is zero or too low, we copy it from the base)
+    if pto.c_tp_basicsize < base_pto.c_tp_basicsize:
         pto.c_tp_basicsize = base_pto.c_tp_basicsize
     if pto.c_tp_itemsize < base_pto.c_tp_itemsize:
         pto.c_tp_itemsize = base_pto.c_tp_itemsize
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to