From 129119aef1c850de9d20ecc828c889801f3e668f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 5 Oct 2025 18:32:16 +0300 Subject: [PATCH] Fix rare breakage of 'revert-buffer' in 'archive-mode' * lisp/arc-mode.el (archive--mode-revert): Avoid deletion of some region of the reverted buffer by 'archive-desummarize'. (Bug#79574) --- lisp/arc-mode.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el index 0c5d3475aa6..66cb89c3342 100644 --- a/lisp/arc-mode.el +++ b/lisp/arc-mode.el @@ -1648,6 +1648,12 @@ as a relative change like \"g+rw\" as for chmod(2)." (defun archive--mode-revert (orig-fun &rest args) (let ((no (archive-get-lineno))) (setq archive-files nil) + ;; 'orig-fun' will indirectly call 'archive-desummarize', which will + ;; delete the region between point-min and + ;; 'archive-proper-file-start'. But the latter will be invalidated + ;; by 'orig-fun' (which actually reverts the buffer), so by setting + ;; it to 1 we prevent the damage from that deletion. + (setq archive-proper-file-start 1) (let ((coding-system-for-read 'no-conversion)) (apply orig-fun t t (cddr args))) (archive-mode)