Stephen Compall <s11@member.fsf.org> writes:
John Fremlin <jf@msi.co.jp> writes:
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
Why are you ignoring this patch?
A delay of 3 days is hardly an abrupt dismissal. Furthermore, I do not believe your response that I have quoted addresses Luís's concerns about backward compatibility.
Thanks for your response. As I explained I don't believe there ever was a :foreign-address type. (defun foreign-allegro-type (type) (if (eq type :foreign-address) nil .... explicitly made it irrelevant. Why does Luís think there was a :foreign-address type? Since when has any lisp had a type which is a :keyword? This is not a foreign-type but a lisp type. To reiterate, my patch solves two problems: use :unsigned-nat for pointers from C store it in an Lisp 'integer Before CFFI use to try nil for pointers from C (meaning :int) store it in a Lisp :foreign-address -- a non-existent type -- (actually fortunately ignored because the first part was nil) I'm not sure when :unsigned-nat was introduced . . . it is indeed very likely that my patch will not work with old versions, in which case :unsigned-long should be used. According to franz.com: :nat and :unsigned-nat: these were added in release 7.0.