X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcallback.impure.lisp;h=623a62a52995e3043fd64a09208cd70c0e1c21ce;hb=7e53ad16e6d2cd5cb22da7e8410f9560019cac19;hp=d2440b4e4675dbba2c5475031859be8bd2861c9e;hpb=b4a85c101536166d4b6521d3a28d5cef5937dc6b;p=sbcl.git diff --git a/tests/callback.impure.lisp b/tests/callback.impure.lisp index d2440b4..623a62a 100644 --- a/tests/callback.impure.lisp +++ b/tests/callback.impure.lisp @@ -126,3 +126,19 @@ (assert (= 26 (alien-funcall foo))) +;;; callbacks with void return values + +(with-test (:name void-return) + (sb-alien::alien-lambda void () + (values))) + +;;; tests for a sign extension problem in callback argument handling on x86-64 + +(with-test (:name sign-extension) + (let ((*add-two-ints* + (sb-alien::alien-callback (function int int int) #'+))) + (assert (= (alien-funcall *add-two-ints* #x-80000000 1) + -2147483647)) + (assert (= (alien-funcall *add-two-ints* #x-80000000 -1) + #x7fffffff)))) +