Index: /branches/working-0711/ccl/level-1/l1-readloop-lds.lisp
===================================================================
--- /branches/working-0711/ccl/level-1/l1-readloop-lds.lisp	(revision 13189)
+++ /branches/working-0711/ccl/level-1/l1-readloop-lds.lisp	(revision 13190)
@@ -300,4 +300,6 @@
     (and fd (eof-transient-p fd))))
 
+(defvar *save-interactive-source-locations* t)
+
 ;;; This is the part common to toplevel loop and inner break loops.
 (defun read-loop (&key (input-stream *standard-input*)
@@ -318,5 +320,5 @@
          (eof-count 0)
          (*show-available-restarts* (and *show-restarts-on-break* *break-condition*))
-	 (*nx-source-note-map* (make-hash-table :test #'eq :shared nil)))
+         (map (make-hash-table :test #'eq :shared nil)))
     (declare (dynamic-extent eof-value))
     (loop
@@ -328,5 +330,4 @@
               (setq *in-read-loop* nil
                     *break-level* break-level)
-	      (clrhash *nx-source-note-map*)
               (multiple-value-bind (form env print-result)
                   (toplevel-read :input-stream input-stream
@@ -334,5 +335,7 @@
                                  :prompt-function prompt-function
                                  :eof-value eof-value
-				 :map *nx-source-note-map*)
+				 :map (when *save-interactive-source-locations*
+                                        (clrhash map)
+                                        map))
                 (if (eq form eof-value)
                   (progn
@@ -346,5 +349,5 @@
                         (abort-break))
                       (exit-interactive-process *current-process*)))
-                  (progn
+                  (let ((*nx-source-note-map* (and *save-interactive-source-locations* map)))
                     (setq eof-count 0)
                     (or (check-toplevel-command form)
