From: Christophe Rhodes Date: Tue, 10 Aug 2010 10:59:04 +0000 (+0000) Subject: 1.0.41.43: fix for RENAME-PACKAGE's return value X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=9152e162ab62d7027a4403fb9b461c31847649a2;p=sbcl.git 1.0.41.43: fix for RENAME-PACKAGE's return value Patch from Eric Marsden (sbcl-devel 2010-07-26) --- diff --git a/NEWS b/NEWS index 923b31b..3c5aca7 100644 --- 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 diff --git a/src/code/target-package.lisp b/src/code/target-package.lisp index 0e0a0aa..ccaa5bb 100644 --- a/src/code/target-package.lisp +++ b/src/code/target-package.lisp @@ -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 diff --git a/tests/packages.impure.lisp b/tests/packages.impure.lisp index 0d6e194..db5c3b2 100644 --- a/tests/packages.impure.lisp +++ b/tests/packages.impure.lisp @@ -17,6 +17,11 @@ (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)) diff --git a/version.lisp-expr b/version.lisp-expr index dc8a1ef..efc894f 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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"