Luís Oliveira <luismbo <at> gmail.com> writes: > > On Thu, Apr 19, 2012 at 2:50 PM, Stelian Ionescu <sionescu <at> cddr.org> wrote: > > (with-foreign-object (p '(:struct timespec) 2) > > (mem-aref p '(:struct timespec) 1)) > > > > In order not to break existing code [...] > > Existing code will not have this (:struct foo) syntax because it was > introduced by the libffi merge. (mem-aref p 'timespec 1) should > exhibit backwards-compatible behaviour. Turns out, the problem is not with mem-aref, but with the mem-aref compile- macro. It binds *parse-bare-structs-as-pointers* to T, whereas mem-aref function doesn't, this affects the result of foreign-type-size.
(cffi:defcstruct foo (classid :short) (name :short) (methodid :short))(cffi:defcstruct foo (classid :short) (name :short) (cffi:foreign-type-size 'foo) => 6 (let ((cffi::*parse-bare-structs-as-pointers* t)) (cffi:foreign-type-size 'foo)) => 8 _______________________________________________ cffi-devel mailing list cffi-devel@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel