GNU bug report logs - #50946
Emacs-28: Inadequate coding in hack-elisp-shorthands

Previous Next

Package: emacs;

Reported by: Alan Mackenzie <acm <at> muc.de>

Date: Fri, 1 Oct 2021 17:12:02 UTC

Severity: normal

Done: João Távora <joaotavora <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Alan Mackenzie <acm <at> muc.de>
Cc: 50946 <at> debbugs.gnu.org, joaotavora <at> gmail.com
Subject: Re: bug#50946: Emacs-28: Inadequate coding in hack-elisp-shorthands
Date: Sat, 02 Oct 2021 18:00:38 +0300
> Date: Sat, 2 Oct 2021 14:45:52 +0000
> Cc: joaotavora <at> gmail.com, 50946 <at> debbugs.gnu.org
> From: Alan Mackenzie <acm <at> muc.de>
> 
> > > The five aspects I enumerated on my original bug report.  Not checking
> > > for a properly formatted Local Variables: section
> 
> > That is not part of the function in question, is it?  It's in
> > hack-local-variables--find-variables, which we use everywhere.
> 
> It is now.  It wasn't when I raised the bug a day or two ago.

So this issue is no longer pertinent, right?

> > > not checking for lower-case in that variable being searched for
> 
> > That's also in hack-local-variables--find-variables, right?
> 
> It is now.  It wasn't when I raised the bug

Also not pertinent, right?

> > > not going back at least 3000 characters
> 
> > That is now fixed, right?
> 
> No, it's not.  In certain edge cases, it will go back fewer than 3000
> characters.

Does the patch below solve this?

> > > I worry, to a lesser degree, it is not entirely clear whether setting
> > > the elisp-shorthands variable in the first line of a short file should
> > > be valid or not.  I don't think the current hack-elisp-shorthands is
> > > careful enough about this.
> 
> > Why does it matter?
> 
> Because the first line definition should either be valid or not valid.
> Currently it works for a sufficiently small file, but not for a normal
> sized file.  This, I think, is a bug.

No, I don't think it's a bug, at least not a bug specific to
shorthands.  That's how file-local variables work in general.

> Say you have a file 3150 bytes long, which is less than 3000 characters
> in Emacs.  Your function will load only 3100 bytes, less than 3000
> characters, into the temporary buffer.  It thus may fail to find a Local
> Variables section, even if this scenario is highly unusual.

This should be solved by the change below.

> Have you checked that things work if the first byte in your temporary
> buffer isn't at the start of a character?

I don't see why this matter, can you explain?

Here's the patch I promised:

diff --git a/lisp/shorthands.el b/lisp/shorthands.el
index b8204d6..6162efd 100644
--- a/lisp/shorthands.el
+++ b/lisp/shorthands.el
@@ -40,7 +40,10 @@ hack-elisp-shorthands
     (with-temp-buffer
       (while (and (< (buffer-size) 3000) (>= from 0))
         (insert-file-contents fullname nil from to)
-        (setq to from from (- from 100)))
+        (setq to from
+              from (cond
+                    ((= from 0) -1)
+                    (t (max 0 (- from 100))))))
       ;; FIXME: relies on the `hack-local-variables--find-variables'
       ;; detail of files.el.  That function should be exported,
       ;; possibly be refactored into two parts, since we're only




This bug report was last modified 3 years and 235 days ago.

Previous Next


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