]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix an unlikely `copyright-find-copyright' problem
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 18 Jul 2021 12:31:09 +0000 (14:31 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 18 Jul 2021 12:31:09 +0000 (14:31 +0200)
* lisp/emacs-lisp/copyright.el (copyright-find-copyright): Make
the copyright matcher more robust (bug#7179).

lisp/emacs-lisp/copyright.el

index 6ba2e7804bb798d1a221a169d8afd9eef7412f79..d2e4891aceee171e18714a478d337167048a8cf6 100644 (file)
@@ -144,11 +144,16 @@ This function sets the match-data that `copyright-update-year' uses."
   (with-demoted-errors "Can't update copyright: %s"
     ;; (1) Need the extra \\( \\) around copyright-regexp because we
     ;; goto (match-end 1) below. See note (2) below.
-    (copyright-re-search (concat "\\(" copyright-regexp
-                                "\\)\\([ \t]*\n\\)?.*\\(?:"
-                                copyright-names-regexp "\\)")
-                        (copyright-limit)
-                        t)))
+    (let ((regexp (concat "\\(" copyright-regexp
+                         "\\)\\([ \t]*\n\\)?.*\\(?:"
+                         copyright-names-regexp "\\)")))
+      (when (copyright-re-search regexp (copyright-limit) t)
+        ;; We may accidentally have landed in the middle of a
+        ;; copyright line, so re-perform the search without the
+        ;; search.  (Otherwise we may be inserting the new year in the
+        ;; middle of the list of years.)
+        (goto-char (match-beginning 0))
+        (copyright-re-search regexp nil t)))))
 
 (defun copyright-find-end ()
   "Possibly adjust the search performed by `copyright-find-copyright'.