[cffi-devel] CFFI and CLSQL
James Bielman
jamesjb at jamesjb.com
Thu May 4 02:01:52 UTC 2006
"Ricardo Boccato" <boccato at gmail.com> writes:
> I am using clisp but the same error ocurred with allegro 7 (trial).
>
> Basically, issuing the command:
>
> (asdf:oos 'asdf:load-op :clsql-oracle)
>
> yields this at the debugger:
>
> APPLY: too few arguments given to #<compiled-function
> #:|150 152 (cffi:define-foreign-type uffi-char (base-type) ...)-10-1-1|>
> [Condition of type system::simple-program-error]
Thanks, I've pushed a fix for this to the Darcs repository.
The problem was that the CFFI::UNPARSE generic function wasn't
specialized for the parameterized UFFI-CHAR type, leading the
MAKE-LOAD-FORM method on CFFI type instances to dump the UFFI-CHAR
type without its parameter. This leads to an error when the resulting
FASL file is loaded...
> I found out that making the following changes to the code seems to
> solve the problem...
>
> computador:~/lib/cffi$ darcs diff
> diff -rN old-cffi/uffi-compat/uffi-compat.lisp
> new-cffi/uffi-compat/uffi-compat.lisp
> 112,113c112,113
> < (:char '(uffi-char :char))
> < (:unsigned-char '(uffi-char :unsigned-char))
> ---
>> (:char :char)
>> (:unsigned-char :unsigned-char)
This will cause problems because the UFFI :char types are defined to
convert between C chars and Lisp CHARACTERs, which the CFFI :char and
:unsigned-char types do not do.
I don't think anyone has ever tried Oracle with CLISP and UFFI-COMPAT
before---with this patch it works for me now, very cool!
Thanks,
James
More information about the cffi-devel
mailing list