GNU bug report logs - #65609
30.0.50; inhibit-eol-conversion breaks revert-buffer

Previous Next

Package: emacs;

Reported by: Andrew Scott <andj.scott <at> gmail.com>

Date: Wed, 30 Aug 2023 07:19:02 UTC

Severity: normal

Found in version 30.0.50

Fixed in version 30.1

Done: Stefan Kangas <stefankangas <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 65609 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Andrew Scott <andj.scott <at> gmail.com>, Po Lu <luangruo <at> yahoo.com>,
 Gerd Möllmann <gerd.moellmann <at> gmail.com>,
 "Herbert J. Skuhra" <herbert <at> gojira.at>
Cc: 65609 <at> debbugs.gnu.org
Subject: Re: bug#65609: 30.0.50; inhibit-eol-conversion breaks revert-buffer
Date: Wed, 30 Aug 2023 16:26:35 +0300
> From: Andrew Scott <andj.scott <at> gmail.com>
> Date: Tue, 29 Aug 2023 16:45:39 +0100
> 
> It appears that inhibit-eol-conversion breaks insert-file-contents's
> replace functionality when a change was made in the middle of the file
> to be reverted as the file contents get duplicated in the buffer. The
> issue can be reproduced on a fresh Emacs with a file named bug.el with
> contents:
> 
>     ;; 1. Launch Emacs: nix run emacs-overlay#emacs-git -- bug.el -Q --load bug.el
>     ;; 2. Outside of Emacs, add text in below empty line:
>     ;; 3. In Emacs, revert-buffer
> 
>     (setq inhibit-eol-conversion t)
> 
> The contents of the buffer after revert-buffer:
> 
>     ;; 1. Launch Emacs: nix run emacs-overlay#emacs-git -- bug.el -Q --load bug.el
>     ;; 2. Outside of Emacs, add text in below empty line:
>     ;; 3. In Emacs, revert-buffer
>     foo
>     (setq inhibit-eol-conversion t)
> 
>     (setq inhibit-eol-conversion t)

Thanks for an easy test case.  We are reading too much from the file
on disk when reverting in this case.

Po Lu, I think we need the patch below to fix this.  Gerd, does this
solve your problem as well, including the abort during bootstrap?
Herbert, I think this could also be related to the problems you see,
so please try the patch below.

diff --git a/src/fileio.c b/src/fileio.c
index 23e1a83..8919e08 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4805,7 +4805,7 @@ DEFUN ("insert-file-contents", Finsert_file_contents, Sinsert_file_contents,
 
 	/* 'try' is reserved in some compilers (Microsoft C).  */
 	ptrdiff_t trytry = min (gap_size, READ_BUF_SIZE);
-	if (!NILP (end))
+	if (seekable || !NILP (end))
 	  trytry = min (trytry, total - inserted);
 
 	if (!seekable && NILP (end))




This bug report was last modified 1 year and 259 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.