[pypy-svn] r73938 - in pypy/branch/cpython-extension/pypy/module/cpyext: . test

afa at codespeak.net afa at codespeak.net
Wed Apr 21 15:03:34 CEST 2010


Author: afa
Date: Wed Apr 21 15:03:32 2010
New Revision: 73938

Modified:
   pypy/branch/cpython-extension/pypy/module/cpyext/test/test_stringobject.py
   pypy/branch/cpython-extension/pypy/module/cpyext/typeobject.py
Log:
Oops, ensure that tp_basic_size is correctly set for custom types like PyStringObject


Modified: pypy/branch/cpython-extension/pypy/module/cpyext/test/test_stringobject.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/test/test_stringobject.py	(original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/test/test_stringobject.py	Wed Apr 21 15:03:32 2010
@@ -28,6 +28,8 @@
                  if(PyString_Size(s) == 11) {
                      result = 1;
                  }
+                 if(s->ob_type->tp_basicsize != 16)
+                     result = 0;
                  Py_DECREF(s);
                  return PyBool_FromLong(result);
              """),

Modified: pypy/branch/cpython-extension/pypy/module/cpyext/typeobject.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/typeobject.py	(original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/typeobject.py	Wed Apr 21 15:03:32 2010
@@ -485,10 +485,10 @@
         pto.c_tp_base = rffi.cast(PyTypeObjectPtr, ref)
     PyPyType_Ready(space, pto, w_type)
 
+    pto.c_tp_basicsize = rffi.sizeof(typedescr.basestruct)
     if pto.c_tp_base:
-        pto.c_tp_basicsize = pto.c_tp_base.c_tp_basicsize
-    else:
-        pto.c_tp_basicsize = rffi.sizeof(typedescr.basestruct)
+        if pto.c_tp_base.c_tp_basicsize > pto.c_tp_basicsize:
+            pto.c_tp_basicsize = pto.c_tp_base.c_tp_basicsize
 
     # will be filled later on with the correct value
     # may not be 0



More information about the Pypy-commit mailing list