Subject: bug#13412: 24.2; find-tag-regexp fails to find any next matches when multiple files are indexed

From: Glenn Morris <[email-masked]>
Date: Wed, 16 Jan 2013 16:24:58 -0500

Sarah Weissman wrote:

> find-tag-regexp finds the first match, but not subsequent ones.

Thanks for the report.
Works in 22.3, broken in 23.1 on.
Bisected to r88247.
Fixed by:

*** lisp/progmodes/etags.el	2013-01-03 02:54:10 +0000
--- lisp/progmodes/etags.el	2013-01-16 21:02:21 +0000
***************
*** 335,346 ****
  		     (save-excursion
  		       (tags-verify-table (buffer-file-name table-buffer))))
  		(with-current-buffer table-buffer
  		  (if (tags-included-tables)
  		      ;; Insert the included tables into the list we
  		      ;; are processing.
  		      (setcdr tables (nconc (mapcar 'tags-expand-table-name
  						    (tags-included-tables))
! 					    (cdr tables)))))
  	      ;; This table is not in core yet.  Insert a placeholder
  	      ;; saying we must read it into core to check for included
  	      ;; tables before searching the next table in the list.
--- 335,349 ----
  		     (save-excursion
  		       (tags-verify-table (buffer-file-name table-buffer))))
  		(with-current-buffer table-buffer
+                   ;; Needed so long as etags-tags-included-tables
+                   ;; does not save-excursion.
+                   (save-excursion
                      (if (tags-included-tables)
                          ;; Insert the included tables into the list we
                          ;; are processing.
                          (setcdr tables (nconc (mapcar 'tags-expand-table-name
                                                        (tags-included-tables))
!                                               (cdr tables))))))
  	      ;; This table is not in core yet.  Insert a placeholder
  	      ;; saying we must read it into core to check for included
  	      ;; tables before searching the next table in the list.
***************
*** 1547,1552 ****
--- 1550,1556 ----
                  files)))
      (nreverse files)))
  
+ ;; FIXME?  Should this save-excursion?
  (defun etags-tags-included-tables () ; Doc string?
    (let ((files nil)
  	beg)