0.9.5.68:
[sbcl.git] / tests / callback.impure.lisp
index d2440b4..623a62a 100644 (file)
 
 (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))))
+