minor fix to alien.impure.lisp test
[sbcl.git] / tests / alien.impure.lisp
index d60bd10..fe5c18e 100644 (file)
     ((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)))
                                     '(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