+(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))))))
+
+(with-test (:name :make-alien-string)
+ (let ((alien (sb-alien::make-alien-string "This comes from lisp!")))
+ (gc :full t)
+ (assert (equal "This comes from lisp!" (cast alien c-string)))
+ (free-alien alien)))
+