((foo (unsigned 32)))
foo)
-#+(or x86-64 x86)
-(with-test (:name bug-316325)
+(with-test (:name bug-316325 :skipped-on '(not (or :x86-64 :x86)))
;; This test works by defining a callback function that provides an
;; identity transform over a full-width machine word, then calling
;; it as if it returned a narrower type and checking to see if any
"execv"))
(values (alien-funcall sys-execv1 program argv)))))
(compiler-note (n)
- (error n))))
+ (error "bad note: ~A" 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)))
+
+(with-test (:name :malloc-failure)
+ (assert (eq :enomem
+ (handler-case
+ (loop repeat 128
+ collect (sb-alien:make-alien char (1- array-total-size-limit)))
+ (storage-condition ()
+ :enomem)))))
;;; success