Subject: bug#50946: Emacs-28: Inadequate coding in hack-elisp-shorthands

From: Eli Zaretskii <[email-masked]>
Date: Sun, 03 Oct 2021 14:45:14 +0300

> Date: Sat, 2 Oct 2021 20:07:26 +0000
> Cc: [email-masked], [email-masked]
> From: Alan Mackenzie <[email-masked]>
> 
> > > > > 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 think it does, yes.  Thanks!

Now installed.

> > > > > 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?
> 
> Otherwise we could have the scenario where somebody sets elisp-shorthands
> in the first line of a file, finds it works, then types more into the
> file, saves the buffer, then finds when she visits the file again that it
> no longer works.  This, I think, would be a Bad Thing.

I'm not sure.  If the user doesn't obey the rules, the user gets
amply punished.

> > > 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.
> 
> No, not quite.  For normal file-local variables, having one set in the
> first line works regardless of the length of the file.  It wouldn't for
> elisp-shorthands, where it would only work for short files.

I don't think I follow.  can you show an example of a problematic
file, so that we are sure we are talking about the same issue?

> > > 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 matters, can you explain?
> 
> It might matter, I simply don't know.  I rarely type characters into
> Emacs which are longer than a single byte in UTF8.  I don't know whether
> insert-file-contents does the Right Thing when there's half a character
> at point-min, then insert-file-contents inserts the other half of the
> character before it.

The character read in separate parts will indeed be incorrect, but how
does this affect searching for the local-variables section?  I don't
think it does, because there are only ASCII characters in the header
of that section.

> I don't know to what extent normal Emacs functions
> work when there are invalid "characters" at point-min or point-max.

They aren't invalid characters, they are raw 8-bit bytes.  Emacs
search functions can cope with them without a problem.