X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-package.lisp;h=4569a11a41757114128fad39d382990ea3a6fcd2;hb=4d0b87793a047baecf2403455ddca1a82f44a41b;hp=ccaa5bbe8c0b2da277ae83b291544f08f6ae93cf;hpb=9152e162ab62d7027a4403fb9b461c31847649a2;p=sbcl.git diff --git a/src/code/target-package.lisp b/src/code/target-package.lisp index ccaa5bb..4569a11 100644 --- a/src/code/target-package.lisp +++ b/src/code/target-package.lisp @@ -75,7 +75,7 @@ (defmacro with-package-names ((names &key) &body body) `(let ((,names *package-names*)) - (with-locked-hash-table (,names) + (with-locked-system-table (,names) ,@body))) ;;;; PACKAGE-HASHTABLE stuff @@ -599,7 +599,7 @@ implementation it is ~S." *default-package-use-list*) (cerror "Clobber existing package." "A package named ~S already exists" name) (setf clobber t)) - (with-packages () + (with-package-graph () ;; Check for race, signal the error outside the lock. (when (and (not clobber) (find-package name)) (go :restart)) @@ -967,8 +967,8 @@ uninterned." (remove symbol shadowing-symbols))) (multiple-value-bind (s w) (find-symbol name package) - (declare (ignore s)) - (cond ((or (eq w :internal) (eq w :external)) + (cond ((not (eq symbol s)) nil) + ((or (eq w :internal) (eq w :external)) (nuke-symbol (if (eq w :internal) (package-internal-symbols package) (package-external-symbols package))