Author: Armin Rigo <ar...@tunes.org>
Branch: ffi-backend
Changeset: r55959:da2e70d24059
Date: 2012-07-07 12:25 +0200
http://bitbucket.org/pypy/pypy/changeset/da2e70d24059/

Log:    Test and fix

diff --git a/pypy/module/_cffi_backend/cdataobj.py 
b/pypy/module/_cffi_backend/cdataobj.py
--- a/pypy/module/_cffi_backend/cdataobj.py
+++ b/pypy/module/_cffi_backend/cdataobj.py
@@ -223,6 +223,12 @@
         W_CDataNewOwning.__init__(self, space, size, ctype)
         self.length = length
 
+    def _owning_num_bytes(self):
+        from pypy.module._cffi_backend import ctypearray
+        ctype = self.ctype
+        assert isinstance(ctype, ctypearray.W_CTypeArray)
+        return self.length * ctype.ctitem.size
+
     def get_array_length(self):
         return self.length
 
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
@@ -1293,3 +1293,9 @@
     pp[0] = p
     s = pp[0][0]
     assert repr(s).startswith("<cdata 'struct foo' 0x")
+
+def test_owning_repr():
+    BInt = new_primitive_type("int")
+    BArray = new_array_type(new_pointer_type(BInt), None)   # int[]
+    p = newp(BArray, 7)
+    assert repr(p) == "<cdata 'int[]' owning 28 bytes>"
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to