(tags-reset-tags-tables): Properly
authorKarl Heuer <kwzh@gnu.org>
Tue, 6 Oct 1998 22:35:51 +0000 (22:35 +0000)
committerKarl Heuer <kwzh@gnu.org>
Tue, 6 Oct 1998 22:35:51 +0000 (22:35 +0000)
find the markers in the old rings that are being discarded.

lisp/progmodes/etags.el

index fdc73dd..94e2c64 100644 (file)
@@ -613,17 +613,17 @@ Returns t if it visits a tags table, or nil if there are no more in the list."
 (defun tags-reset-tags-tables ()
   "Reset tags state to cancel effect of any previous \\[visit-tags-table] or \\[find-tag]."
   (interactive)
+  ;; Clear out the markers we are throwing away.
+  (let ((i 0))
+    (while (< i find-tag-marker-ring-length)
+      (if (aref (cddr tags-location-ring) i)
+         (set-marker (aref (cddr tags-location-ring) i) nil))
+      (if (aref (cddr find-tag-marker-ring) i)
+         (set-marker (aref (cddr find-tag-marker-ring) i) nil))
+      (setq i (1+ i))))
   (setq tags-file-name nil
-       tags-location-ring (progn
-                            (mapcar (lambda (m)
-                                      (set-marker m nil))
-                                    tags-location-ring)
-                            (make-ring find-tag-marker-ring-length))
-       find-tag-marker-ring (progn
-                              (mapcar (lambda (m)
-                                        (set-marker m nil))
-                                      find-tag-marker-ring)
-                              (make-ring find-tag-marker-ring-length))
+       tags-location-ring (make-ring find-tag-marker-ring-length)
+       find-tag-marker-ring (make-ring find-tag-marker-ring-length)
        tags-table-list nil
        tags-table-computed-list nil
        tags-table-computed-list-for nil