[cffi-devel] [PATCH] 64-bit support for Allegro, and allocate stack objects in the static area

John Fremlin jf at msi.co.jp
Mon Jan 5 03:48:13 UTC 2009


On Mon, 5 Jan 2009 03:14:13 +0000, "Luís Oliveira" <luismbo at gmail.com> wrote:

> On Mon, Jan 5, 2009 at 1:02 AM, John Fremlin <jf at msi.co.jp> wrote:
> > @@ -263,12 +263,12 @@ SIZE-VAR is supplied, it will be bound to SIZE during BODY."
> >           :unsigned-long) 'integer)
> >         (:float 'single-float)
> >         (:double 'double-float)
> > -        (:foreign-address :foreign-address)
> > +        (:foreign-address 'integer)
> >         (:void 'null))))
> 
> This change is somewhat unexpected, is it really necessary?

Yes.

It is needed because now foreign-allegro-type does not return nil
for :foreign-address, and so Allegro will actually check the second
value from allegro-type-pair (which it ignored before because the first
value was nil).

> >  (defun foreign-allegro-type (type)
> >   (if (eq type :foreign-address)
> > -      nil
> > +      :unsigned-nat
> >       type))
> >
> >  (defun allegro-type-pair (type)
> 
> Does it work if you use :FOREIGN-ADDRESS instead of :UNSIGNED-NAT in
> FOREIGN-ALLEGRO-TYPE?

No, that's the first thing I tried

> I'm asking these questions because I suspect both changes break with
> older versions of Allegro but I can't test it since the express
> edition 7.0 is no longer available. It's probably not a big deal but
> I'd like to at least try to maintain compatibility.

There is no :foreign-address type in Allegro 8.1?

It is a very strange idea that there ever would be such a type. . .

http://www.franz.com/support/documentation/current/doc/ftype.htm





More information about the cffi-devel mailing list