Handle run-program with :directory nil.
[sbcl.git] / src / code / target-load.lisp
index 48b3fc3..4a819e9 100644 (file)
         (if pathname
             (let* ((info (sb!c::make-file-source-info
                           pathname (stream-external-format stream)))
-                   (sb!c::*source-info* info)
-                   (sb!c::*source-paths* (make-hash-table :test 'eq)))
+                   (sb!c::*source-info* info))
               (setf (sb!c::source-info-stream info) stream)
               (sb!c::do-forms-from-info ((form current-index) info)
-                (sb!c::find-source-paths form current-index)
-                (eval-form form current-index)))
+                (sb!c::with-source-paths
+                  (sb!c::find-source-paths form current-index)
+                  (eval-form form current-index))))
             (let ((sb!c::*source-info* nil))
               (do ((form (read stream nil *eof-object*)
                          (read stream nil *eof-object*)))
                   ((eq form *eof-object*))
-                (eval-form form nil)))))))
+                (sb!c::with-source-paths
+                  (eval-form form nil))))))))
   t)
 \f
 ;;;; LOAD itself
              (return-from load
                (if faslp
                    (load-as-fasl stream verbose print)
-                   (load-as-source stream :verbose verbose :print print))))))
+                   (sb!c:with-compiler-error-resignalling
+                     (load-as-source stream :verbose verbose
+                                            :print print)))))))
     ;; Case 1: stream.
     (when (streamp pathspec)
       (return-from load (load-stream pathspec (fasl-header-p pathspec))))