From: Neil H. <gne...@us...> - 2008-06-02 16:24:54
|
The following is unexpected and appears to be inconsistent behavior in Windows/SBCL v 1.0.7.14. Is this a bug or a feature? Redefining a simple alien type behaves the way I'd expect: CL-USER> (define-alien-type xtype short) ==> XTYPE CL-USER> (with-alien ((myvar xtype 1024)) myvar) ==> 1024 CL-USER> (define-alien-type xtype char) ==> WARNING: redefining XTYPE to be: (SIGNED 8), was (SIGNED 16) XTYPE CL-USER> (with-alien ((myvar xtype 1024)) myvar) ==>; Evaluation aborted ; in: LAMBDA NIL The value 1024 is not of type (SIGNED-BYTE 8)... but redefining a more-complex alien type does not behave the same way: CL-USER> (define-alien-type nil (struct mystruct (myshort short) (mychar char))) ==> NIL CL-USER> (with-alien ((myst (struct mystruct))) (with-alien ((mysh short (slot myst 'myshort))) mysh)) ==> 0 CL-USER> (define-alien-type nil (struct mystruct (myint int) (mychar char))) ==> NIL CL-USER> (with-alien ((myst (struct mystruct))) (with-alien ((myin int (slot myst 'myint))) myin)) ==> ; Evaluation aborted ; in: LAMBDA NIL There is no slot named MYINT... |