summaryrefslogtreecommitdiff
path: root/lisp/gnus/message.el
diff options
context:
space:
mode:
authorPhilip Kaludercic <philipk@posteo.net>2022-02-14 11:51:06 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2022-02-14 11:51:48 +0100
commit35bb4c1c3c64d09d9dea0ed7ba0314893e8f5f3c (patch)
tree1f1eeddb63fad6267418dea022dedf19148ae0a5 /lisp/gnus/message.el
parent9844b152a5c96d7aa0203a0573767241a1bbd043 (diff)
downloademacs-35bb4c1c3c64d09d9dea0ed7ba0314893e8f5f3c.tar.gz
Improve stability of message-hide-headers
* message.el (message-hide-headers): Use a pointer instead of tracking the "end-of-headers" point manually (bug#53991).
Diffstat (limited to 'lisp/gnus/message.el')
-rw-r--r--lisp/gnus/message.el19
1 files changed, 8 insertions, 11 deletions
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 869ab3f82b7..800c7dcea03 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -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)