[pypy-commit] pypy ffi-backend: Test and fix

arigo noreply at buildbot.pypy.org
Sat Jul 7 12:30:17 CEST 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: ffi-backend
Changeset: r55960:d7a56e55a7e6
Date: 2012-07-07 12:30 +0200
http://bitbucket.org/pypy/pypy/changeset/d7a56e55a7e6/

Log:	Test and fix

diff --git a/pypy/module/_cffi_backend/func.py b/pypy/module/_cffi_backend/func.py
--- a/pypy/module/_cffi_backend/func.py
+++ b/pypy/module/_cffi_backend/func.py
@@ -36,8 +36,10 @@
 def sizeof(space, w_obj):
     ob = space.interpclass_w(w_obj)
     if isinstance(ob, cdataobj.W_CData):
-        # xxx CT_ARRAY
-        size = ob.ctype.size
+        if isinstance(ob, cdataobj.W_CDataNewOwningLength):
+            size = ob._owning_num_bytes()
+        else:
+            size = ob.ctype.size
     elif isinstance(ob, ctypeobj.W_CType):
         size = ob.size
         if size < 0:
diff --git a/pypy/module/_cffi_backend/test/_backend_test_c.py b/pypy/module/_cffi_backend/test/_backend_test_c.py
--- a/pypy/module/_cffi_backend/test/_backend_test_c.py
+++ b/pypy/module/_cffi_backend/test/_backend_test_c.py
@@ -1299,3 +1299,4 @@
     BArray = new_array_type(new_pointer_type(BInt), None)   # int[]
     p = newp(BArray, 7)
     assert repr(p) == "<cdata 'int[]' owning 28 bytes>"
+    assert sizeof(p) == 28


More information about the pypy-commit mailing list