1.0.46.43: fix sb-introspect on non-threaded builds
[sbcl.git] / tests / alien.impure.lisp
index b327577..d60bd10 100644 (file)
@@ -20,8 +20,8 @@
 ;;; In sbcl-0.6.10, Douglas Brebner reported that (SETF EXTERN-ALIEN)
 ;;; was messed up so badly that trying to execute expressions like
 ;;; this signalled an error.
-(setf (sb-alien:extern-alien "current_control_stack_pointer" sb-alien:unsigned)
-      (sb-alien:extern-alien "current_control_stack_pointer" sb-alien:unsigned))
+(setf (sb-alien:extern-alien "thread_control_stack_size" sb-alien:unsigned)
+      (sb-alien:extern-alien "thread_control_stack_size" sb-alien:unsigned))
 
 ;;; bug 133, fixed in 0.7.0.5: Somewhere in 0.pre7.*, C void returns
 ;;; were broken ("unable to use values types here") when
     (verify (signed 16)   #x003f8042 #x-7fbe)
     (verify (signed 16)   #x003f7042 #x7042)))
 
+(with-test (:name :bug-654485)
+  ;; DEBUG 2 used to prevent let-conversion of the open-coded ALIEN-FUNCALL body,
+  ;; which in turn led the dreaded %SAP-ALIEN note.
+  (handler-case
+      (compile nil
+               `(lambda (program argv)
+                  (declare (optimize (debug 2)))
+                  (with-alien ((sys-execv1 (function int c-string (* c-string)) :extern
+                                           "execv"))
+                    (values (alien-funcall sys-execv1 program argv)))))
+    (compiler-note (n)
+      (error n))))
+
+(with-test (:name :bug-721087)
+  (assert (typep nil '(alien c-string)))
+  (assert (not (typep nil '(alien (c-string :not-null t)))))
+  (assert (eq :ok
+              (handler-case
+                  (posix-getenv nil)
+                (type-error (e)
+                  (when (and (null (type-error-datum e))
+                             (equal (type-error-expected-type e)
+                                    '(alien (c-string :not-null t))))
+                    :ok))))))
+
 ;;; success