0.8.9.6:
[sbcl.git] / tests / load.impure.lisp
diff --git a/tests/load.impure.lisp b/tests/load.impure.lisp
new file mode 100644 (file)
index 0000000..b54b374
--- /dev/null
@@ -0,0 +1,35 @@
+;;;; miscellaneous side-effectful tests of LOAD
+
+;;;; This software is part of the SBCL system. See the README file for
+;;;; more information.
+;;;;
+;;;; While most of SBCL is derived from the CMU CL system, the test
+;;;; files (like this one) were written from scratch after the fork
+;;;; from CMU CL.
+;;;; 
+;;;; This software is in the public domain and is provided with
+;;;; absolutely no warranty. See the COPYING and CREDITS files for
+;;;; more information.
+
+;;; Bug reported by Sean Ross: FASL loader set fill pointer to loaded
+;;; simple arrays.
+(defvar *array*)
+(defvar *tmp-filename* "load-test.tmp")
+
+(progn
+  (with-open-file (s *tmp-filename*
+                     :direction :output
+                     :if-exists :supersede
+                     :if-does-not-exist :create)
+    (print '(setq *array* #3a(((1 2) (2 1)) ((3 4) (4 3)))) s))
+  (let (tmp-fasl)
+    (unwind-protect
+         (progn
+           (setq tmp-fasl (compile-file *tmp-filename*))
+           (let ((*array* nil))
+             (load tmp-fasl)
+             (assert (arrayp *array*))
+             (assert (= (array-rank *array*) 3))
+             (assert (not (array-has-fill-pointer-p *array*)))))
+      (when tmp-fasl (delete-file tmp-fasl))
+      (delete-file *tmp-filename*))))