Loading NEWS +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ changes in sbcl-1.0.25 relative to 1.0.24: by Tobias Rittweiler, patch by Paul Khuong) * bug fix: setting alien structure fields of type struct by value now computes the right offset for the memory copy. * bug fix: compilation problem involving inlined calls to aliens with result type VOID. (reported by Ken Olum) changes in sbcl-1.0.24 relative to 1.0.23: * new feature: ARRAY-STORAGE-VECTOR provides access to the underlying data Loading src/code/target-alieneval.lisp +5 −19 Original line number Diff line number Diff line Loading @@ -723,25 +723,11 @@ allocated using ``malloc'', so it can be passed to foreign functions which use ((,lisp-name (function ,result-type ,@(arg-types)) :extern ,alien-name) ,@(alien-vars)) #-nil (values (alien-funcall ,lisp-name ,@(alien-args)) ,@(results)) #+nil (if (alien-values-type-p result-type) ;; FIXME: RESULT-TYPE is a type specifier, so it ;; cannot be of type ALIEN-VALUES-TYPE. Also note, ;; that if RESULT-TYPE is VOID, then this code ;; disagrees with the computation of the return type ;; and with all usages of this macro. -- APD, ;; 2002-03-02 (let ((temps (make-gensym-list (length (alien-values-type-values result-type))))) `(multiple-value-bind ,temps (alien-funcall ,lisp-name ,@(alien-args)) (values ,@temps ,@(results)))) (values (alien-funcall ,lisp-name ,@(alien-args)) ,@(results))))))))) ,@(if (eq 'void result-type) `((alien-funcall ,lisp-name ,@(alien-args)) (values nil ,@(results))) `((values (alien-funcall ,lisp-name ,@(alien-args)) ,@(results)))))))))) (defun alien-typep (object type) #!+sb-doc Loading tests/alien.impure.lisp +7 −0 Original line number Diff line number Diff line Loading @@ -245,4 +245,11 @@ (with-alien ((myin int (slot myst 'myint))) (assert (integerp myin)))))) ;;; void conflicted with derived type (declaim (inline bug-316075)) (sb-alien:define-alien-routine bug-316075 void (result char :out)) (with-test (:name bug-316075) (handler-bind ((warning #'error)) (compile nil '(lambda () (multiple-value-list (bug-316075)))))) ;;; success version.lisp-expr +1 −1 Original line number Diff line number Diff line Loading @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) "1.0.24.32" "1.0.24.33" Loading
NEWS +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ changes in sbcl-1.0.25 relative to 1.0.24: by Tobias Rittweiler, patch by Paul Khuong) * bug fix: setting alien structure fields of type struct by value now computes the right offset for the memory copy. * bug fix: compilation problem involving inlined calls to aliens with result type VOID. (reported by Ken Olum) changes in sbcl-1.0.24 relative to 1.0.23: * new feature: ARRAY-STORAGE-VECTOR provides access to the underlying data Loading
src/code/target-alieneval.lisp +5 −19 Original line number Diff line number Diff line Loading @@ -723,25 +723,11 @@ allocated using ``malloc'', so it can be passed to foreign functions which use ((,lisp-name (function ,result-type ,@(arg-types)) :extern ,alien-name) ,@(alien-vars)) #-nil (values (alien-funcall ,lisp-name ,@(alien-args)) ,@(results)) #+nil (if (alien-values-type-p result-type) ;; FIXME: RESULT-TYPE is a type specifier, so it ;; cannot be of type ALIEN-VALUES-TYPE. Also note, ;; that if RESULT-TYPE is VOID, then this code ;; disagrees with the computation of the return type ;; and with all usages of this macro. -- APD, ;; 2002-03-02 (let ((temps (make-gensym-list (length (alien-values-type-values result-type))))) `(multiple-value-bind ,temps (alien-funcall ,lisp-name ,@(alien-args)) (values ,@temps ,@(results)))) (values (alien-funcall ,lisp-name ,@(alien-args)) ,@(results))))))))) ,@(if (eq 'void result-type) `((alien-funcall ,lisp-name ,@(alien-args)) (values nil ,@(results))) `((values (alien-funcall ,lisp-name ,@(alien-args)) ,@(results)))))))))) (defun alien-typep (object type) #!+sb-doc Loading
tests/alien.impure.lisp +7 −0 Original line number Diff line number Diff line Loading @@ -245,4 +245,11 @@ (with-alien ((myin int (slot myst 'myint))) (assert (integerp myin)))))) ;;; void conflicted with derived type (declaim (inline bug-316075)) (sb-alien:define-alien-routine bug-316075 void (result char :out)) (with-test (:name bug-316075) (handler-bind ((warning #'error)) (compile nil '(lambda () (multiple-value-list (bug-316075)))))) ;;; success
version.lisp-expr +1 −1 Original line number Diff line number Diff line Loading @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) "1.0.24.32" "1.0.24.33"