[pypy-svn] r73437 - pypy/branch/cpython-extension/pypy/module/cpyext

xoraxax at codespeak.net xoraxax at codespeak.net
Tue Apr 6 03:14:21 CEST 2010


Author: xoraxax
Date: Tue Apr  6 03:14:19 2010
New Revision: 73437

Modified:
   pypy/branch/cpython-extension/pypy/module/cpyext/pyobject.py
Log:
Correctly calculate allocation size.

Modified: pypy/branch/cpython-extension/pypy/module/cpyext/pyobject.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/pyobject.py	(original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/pyobject.py	Tue Apr  6 03:14:19 2010
@@ -30,7 +30,7 @@
     print >>sys.stderr
 
 
-def make_ref(space, w_obj, borrowed=False, steal=False):
+def make_ref(space, w_obj, borrowed=False, steal=False, items=0):
     from pypy.module.cpyext.typeobject import allocate_type_obj,\
             W_PyCTypeObject, PyOLifeline
     from pypy.module.cpyext.pycobject import W_PyCObject, PyCObject
@@ -59,7 +59,7 @@
                 # Don't increase refcount for non-heaptypes
                 if not rffi.cast(lltype.Signed, pto.c_tp_flags) & Py_TPFLAGS_HEAPTYPE:
                     Py_DecRef(space, w_type_pyo)
-                basicsize = pto.c_tp_basicsize
+                basicsize = pto.c_tp_basicsize + items * pto.c_tp_itemsize
                 py_obj_pad = lltype.malloc(rffi.VOIDP.TO, basicsize,
                         flavor="raw", zero=True)
                 py_obj = rffi.cast(PyObject, py_obj_pad)



More information about the Pypy-commit mailing list