On Mon, 5 Jan 2009 03:14:13 +0000, "Luís Oliveira" luismbo@gmail.com wrote:
On Mon, Jan 5, 2009 at 1:02 AM, John Fremlin jf@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