I think this kind of code does not like cffi-uffi-compat:<br><br>(defun gl-apply-matrix (a b c d x y)<br>  (let ((m (allocate-foreign-object :float 16))<br>    (l (list a c 0 0 b d 0 0 0 0 1 0 x y 0 1)))<br>    (loop for i from 0 to 15 and j in l do
<br>     (setf (deref-array m :float i) (coerce j 'float)))<br>    (gl-mult-matrixf m)<br>    (free-foreign-object m)))<br><br>The allocate ended up with CFFI being passed ':float, which really made CFFI unhappy. I beat on things a little and got past that with the dubious:
<br><br>(defmacro allocate-foreign-object (type &optional (size 1))<br>  "Allocate one or more instance of a foreign type."<br>  `(cffi:foreign-alloc ,(cond<br>                         ((keywordp type) `,(convert-uffi-type type))
<br>                         ((constantp type) `',(convert-uffi-type (eval type)))<br>                         (t `(convert-uffi-type ,type)))<br>                       :count ,size))<br><br>But a similar hack on deref-array did not fly and when I saw why I decided to port the code to native CFFI since there is not that much of it.
<br><br>Are those easily fixable? There is a lot of UFFI code out there that might like CFFI's portability. (I know you know that. <g>)<br><br>kenny<br>