"Hoehle, Joerg-Cyril" <[EMAIL PROTECTED]> writes:

> Uhoh, then it's likely not the FFI.  Please investigate.

It looks like the problem is with FFI:UNSIGNED-FOREIGN-ADDRESS and
FFI:FOREIGN-ADDRESS-UNSIGNED expecting and returning 32-bit integers:

[ ...with *print-base* set to 16... ]
CFFI[47]> (ffi:with-foreign-object (x 'ffi:int)
            (print (ffi:foreign-address x))
            (print (ffi:foreign-address-unsigned (ffi:foreign-address x)))
            nil)

#<FOREIGN-ADDRESS #x00007FFFFFEF3750> 
FFEF3750 
NIL

CFFI[49]> (ffi:unsigned-foreign-address #x100000000)

*** - not a 32-bit integer: 100000000
The following restarts are available:
ABORT          :R1      ABORT
Break 1 CFFI[50]> 

This breaks CFFI-SYS:INC-POINTER which ends up returning bogus
pointers because the high 32 bits have been truncated.

James
_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel

Reply via email to