0.8.10.31:
authorChristophe Rhodes <csr21@cam.ac.uk>
Mon, 17 May 2004 16:37:27 +0000 (16:37 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Mon, 17 May 2004 16:37:27 +0000 (16:37 +0000)
Fix for bug reported by piso on #lisp:
... (MAKE-PACKAGE "FOO" NIL NIL) should signal an error;
... NB: this commit does not fix the cases in PFD's test suite,
which presumably go through some local call analysis rather
than &MORE entry conversion.

NEWS
src/compiler/ir1tran-lambda.lisp
tests/eval.impure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index c278247..870970d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2437,6 +2437,9 @@ changes in sbcl-0.8.11 relative to sbcl-0.8.10:
   * fixed bug: as reported by Kalle Olavi Niemitalo on #lisp IRC,
     don't warn on legal loop code involving more than one aggregate
     boolean.  (thanks to Nikodemus Siivola)
+  * fixed bug: as reported by Peter Graves on #lisp IRC, passing a NIL
+    in keyword position to MAKE-PACKAGE was not being reported as
+    invalid.
   * optimization: rearranged the expansion of various defining macros
     so that each expands into only one top-level form in a
     :LOAD-TOPLEVEL context; this appears to decrease fasl sizes by
index ec19c9e..053b6df 100644 (file)
                 (tests `((eq ,n-key :allow-other-keys)
                          (setq ,n-allowp ,n-value-temp))))
              (tests `(t
-                      (setq ,n-losep ,n-key))))
+                      (setq ,n-losep (list ,n-key)))))
 
            (body
             `(when (oddp ,n-count)
 
            (unless allowp
              (body `(when (and ,n-losep (not ,n-allowp))
-                      (%unknown-key-arg-error ,n-losep)))))))
+                      (%unknown-key-arg-error (car ,n-losep))))))))
 
       (let ((ep (ir1-convert-lambda-body
                 `((let ,(temps)
index 3f7aa88..f48801e 100644 (file)
                                  foo)))
                        error))
 
+;;; MAKE-PACKAGE (and other &key functions) should signal an error
+;;; when given a NIL key.  This is kind of a compiler test really, but
+;;; this'll do as a resting place.
+(handler-case
+    (eval '(make-package "FOO" nil nil))
+  (error () :ok)
+  (:no-error (c) (error "MAKE-PACKAGE succeeded: ~S" c)))
+
 ;;; success
 (sb-ext:quit :unix-status 104)
index a063d72..676fef9 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.10.30"
+"0.8.10.31"