[pypy-commit] cffi new_struct_allocated_size: Add length field to CDataObject_own_structptr to hold the size of the memory block allocated for the struct.

coronafire pypy.commits at gmail.com
Wed Oct 19 02:53:26 EDT 2016


Author: Andrew Leech <andrew at alelec.net>
Branch: new_struct_allocated_size
Changeset: r2786:8e7211a884bd
Date: 2016-09-12 14:02 +1000
http://bitbucket.org/cffi/cffi/changeset/8e7211a884bd/

Log:	Add length field to CDataObject_own_structptr to hold the size of
	the memory block allocated for the struct. This is particularly
	useful for C99 variable-sized structures where the sizeof(<typedef>)
	does not directly inform the allocated size.

diff --git a/c/_cffi_backend.c b/c/_cffi_backend.c
--- a/c/_cffi_backend.c
+++ b/c/_cffi_backend.c
@@ -238,6 +238,7 @@
 
 typedef struct {
     CDataObject head;
+    Py_ssize_t length;     /* same as CDataObject_own_length up to here */
     PyObject *structobj;
 } CDataObject_own_structptr;
 
@@ -3199,6 +3200,7 @@
         }
         /* store the only reference to cds into cd */
         ((CDataObject_own_structptr *)cd)->structobj = (PyObject *)cds;
+        ((CDataObject_own_structptr *)cd)->length = datasize;
         assert(explicitlength < 0);
 
         cd->c_data = cds->c_data;


More information about the pypy-commit mailing list