diff --git a/NEWS b/NEWS index 4ca43a6c4..f4be34284 100644 --- a/NEWS +++ b/NEWS @@ -20,6 +20,8 @@ changes in sbcl-0.8.21 (0.9alpha.1?) relative to sbcl-0.8.20: the specializer is now possible. * fixed bug: the MAKE-INSTANCE optimization is now correct in the face of package deletion. + * fixed bug: LOAD should bind *LOAD-PATHNAME* to the merged + pathname. (reported by David Tolpin on c.l.l) * contrib improvement: the SB-SIMPLE-STREAMS contrib now defines STRING-SIMPLE-STREAM and FILE-SIMPLE-STREAM as subclasses of STRING-STREAM and FILE-STREAM, respectively. diff --git a/src/code/target-load.lisp b/src/code/target-load.lisp index 4d7e676d1..2aa6bef99 100644 --- a/src/code/target-load.lisp +++ b/src/code/target-load.lisp @@ -69,7 +69,7 @@ (return-from internal-load nil))) (let ((*load-truename* truename) - (*load-pathname* pathname)) + (*load-pathname* (merge-pathnames pathname))) (case contents (:source (with-open-file (stream truename diff --git a/tests/load.impure.lisp b/tests/load.impure.lisp index f0d452430..fb7b9c91f 100644 --- a/tests/load.impure.lisp +++ b/tests/load.impure.lisp @@ -53,4 +53,19 @@ (when tmp-fasl (delete-file tmp-fasl)) (delete-file *tmp-filename*)))) +;;; As reported by David Tolpin *LOAD-PATHNAME* was not merged. +(progn + (defvar *saved-load-pathname*) + (with-open-file (s *tmp-filename* + :direction :output + :if-exists :supersede + :if-does-not-exist :create) + (print '(setq *saved-load-pathname* *load-pathname*) s)) + (let (tmp-fasl) + (unwind-protect + (progn + (load *tmp-filename*) + (assert (equal (merge-pathnames *tmp-filename*) *saved-load-pathname*))) + (delete-file *tmp-filename*)))) + (quit :unix-status 104) diff --git a/version.lisp-expr b/version.lisp-expr index f24126713..1d1ec0662 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".) -"0.8.20.10" +"0.8.20.11"