1.0.41.43: fix for RENAME-PACKAGE's return value
authorChristophe Rhodes <csr21@cantab.net>
Tue, 10 Aug 2010 10:59:04 +0000 (10:59 +0000)
committerChristophe Rhodes <csr21@cantab.net>
Tue, 10 Aug 2010 10:59:04 +0000 (10:59 +0000)
Patch from Eric Marsden (sbcl-devel 2010-07-26)

NEWS
src/code/target-package.lisp
tests/packages.impure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 923b31b..3c5aca7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,7 @@ changes relative to sbcl-1.0.41
   * enhancement: Explicit memory barrier operations are now available for use
     by multithreaded code.  See documentation for details.
   * enhancement: Experimental support for threading on Linux/PPC.
+  * bug fix: RENAME-PACKAGE returns the package.  (Thanks to Eric Marsden)
 
 changes in sbcl-1.0.41 relative to sbcl-1.0.40:
   * optimization: validity of observed keyword initargs to MAKE-INSTANCE is
index 0e0a0aa..ccaa5bb 100644 (file)
@@ -640,9 +640,10 @@ implementation it is ~S." *default-package-use-list*)
 (defun rename-package (package-designator name &optional (nicknames ()))
   #!+sb-doc
   "Changes the name and nicknames for a package."
+  (let ((package nil))
   (tagbody :restart
-     (let* ((package (find-undeleted-package-or-lose package-designator))
-            (name (package-namify name))
+       (setq package (find-undeleted-package-or-lose package-designator))
+       (let* ((name (package-namify name))
             (found (find-package name))
             (nicks (mapcar #'string nicknames)))
        (unless (or (not found) (eq found package))
@@ -668,8 +669,8 @@ implementation it is ~S." *default-package-use-list*)
            (setf (package-%name package) name
                  (gethash name names) package
                  (package-%nicknames package) ()))
-         (%enter-new-nicknames package nicknames))
-       package)))
+           (%enter-new-nicknames package nicknames))))
+    package))
 
 (defun delete-package (package-designator)
   #!+sb-doc
index 0d6e194..db5c3b2 100644 (file)
 (assert (eq *foo* (find-package "")))
 (assert (delete-package ""))
 
+(make-package "BAR")
+(defvar *baz* (rename-package "BAR" "BAZ"))
+(assert (eq *baz* (find-package "BAZ")))
+(assert (delete-package *baz*))
+
 (handler-case
     (export :foo)
   (package-error (c) (princ c))
index dc8a1ef..efc894f 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".)
-"1.0.41.42"
+"1.0.41.43"