From ec6254e5527b2b0aa6d93d6c83873aa400c20db3 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Mon, 21 Sep 2020 00:26:54 +0200 Subject: [PATCH] Fix infloop when folding difficult headers in Message * lisp/mail/rfc2047.el (rfc2047-fold-field): Return the end point. * lisp/gnus/message.el (message--fold-long-headers): Use that to reliably achieve progress. --- lisp/gnus/message.el | 8 ++++---- lisp/mail/rfc2047.el | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 3e7e18906c6..16f47c8d4c1 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -4843,10 +4843,10 @@ If you always want Gnus to send messages in one piece, set Each line should be no more than 79 characters long." (goto-char (point-min)) (while (not (eobp)) - (when (and (looking-at "[^:]+:") - (> (- (line-end-position) (point)) 79)) - (mail-header-fold-field)) - (forward-line 1))) + (if (and (looking-at "[^:]+:") + (> (- (line-end-position) (point)) 79)) + (goto-char (mail-header-fold-field)) + (forward-line 1)))) (defvar sendmail-program) (defvar smtpmail-smtp-server) diff --git a/lisp/mail/rfc2047.el b/lisp/mail/rfc2047.el index 234f319669f..4aa0c2809b2 100644 --- a/lisp/mail/rfc2047.el +++ b/lisp/mail/rfc2047.el @@ -716,11 +716,13 @@ Point moves to the end of the region." (goto-char e))))) (defun rfc2047-fold-field () - "Fold the current header field." + "Fold the current header field. +Return the new end point." (save-excursion (save-restriction (rfc2047-narrow-to-field) - (rfc2047-fold-region (point-min) (point-max))))) + (rfc2047-fold-region (point-min) (point-max)) + (point-max)))) (defun rfc2047-fold-region (b e) "Fold long lines in region B to E." -- 2.39.2