0.9.2.7:
[sbcl.git] / src / code / target-package.lisp
index b501208..88b3cbf 100644 (file)
@@ -237,9 +237,11 @@ error if any of PACKAGES is not a valid package designator."
   #!+sb-package-locks
   (let* ((symbol (etypecase name
                   (symbol name)
-                  (list (if (eq 'setf (first name))
+                  (list (if (and (consp (cdr name))
+                                 (eq 'setf (first name)))
                             (second name)
-                            ;; Skip (class-predicate foo), etc.
+                            ;; Skip lists of length 1, single conses and
+                            ;; (class-predicate foo), etc.
                             ;; FIXME: MOP and package-lock
                             ;; interaction needs to be thought about.
                             (return-from 
@@ -649,8 +651,8 @@ error if any of PACKAGES is not a valid package designator."
   ;; We just simple-stringify the name and call INTERN*, where the real
   ;; logic is.
   (let ((name (if (simple-string-p name)
-               name
-               (coerce name 'simple-string)))
+                 name
+                 (coerce name 'simple-string)))
        (package (find-undeleted-package-or-lose package)))
     (declare (simple-string name))
       (intern* name