]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve stability of message-hide-headers
authorPhilip Kaludercic <philipk@posteo.net>
Mon, 14 Feb 2022 10:51:06 +0000 (11:51 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 14 Feb 2022 10:51:48 +0000 (11:51 +0100)
* message.el (message-hide-headers): Use a pointer instead of tracking
the "end-of-headers" point manually (bug#53991).

lisp/gnus/message.el

index 869ab3f82b7bafd69ba98af5ac6d282ebd1a32a8..800c7dcea031e3c565e81cb4790a5a55d9749b09 100644 (file)
@@ -8625,26 +8625,23 @@ From headers in the original article."
                   message-hidden-headers))
        (inhibit-point-motion-hooks t)
        (inhibit-modification-hooks t)
-       (end-of-headers (point-min)))
+       end-of-headers)
     (when regexps
       (save-excursion
        (save-restriction
          (message-narrow-to-headers)
+          (setq end-of-headers (point-min-marker))
          (goto-char (point-min))
          (while (not (eobp))
            (if (not (message-hide-header-p regexps))
                (message-next-header)
-             (let ((begin (point))
-                   header header-len)
+             (let ((begin (point)))
                (message-next-header)
-               (setq header (buffer-substring begin (point))
-                     header-len (- (point) begin))
-               (delete-region begin (point))
-               (goto-char end-of-headers)
-               (insert header)
-               (setq end-of-headers
-                     (+ end-of-headers header-len))))))))
-    (narrow-to-region end-of-headers (point-max))))
+                (let ((header (delete-and-extract-region begin (point))))
+                  (save-excursion
+                    (goto-char end-of-headers)
+                    (insert-before-markers header))))))))
+      (narrow-to-region end-of-headers (point-max)))))
 
 (defun message-hide-header-p (regexps)
   (let ((result nil)