From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#50946: Emacs-28: Inadequate coding in hack-elisp-shorthands Date: Sat, 02 Oct 2021 18:00:38 +0300 Message-ID: <83czonbhex.fsf@gnu.org> References: <831r54einq.fsf@gnu.org> <871r54xnds.fsf@gmail.com> <87ee933bcj.fsf@gmail.com> <83pmsnbnci.fsf@gnu.org> <83k0ivbjbu.fsf@gnu.org> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8223"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 50946@debbugs.gnu.org, joaotavora@gmail.com To: Alan Mackenzie Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Oct 02 17:04:34 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mWgZ0-0001w8-2y for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 02 Oct 2021 17:04:34 +0200 Original-Received: from localhost ([::1]:39490 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mWgYx-0003j2-Mz for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 02 Oct 2021 11:04:31 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51862) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mWgWY-0007zm-Rd for bug-gnu-emacs@gnu.org; Sat, 02 Oct 2021 11:02:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:48691) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mWgWY-0005fA-KI for bug-gnu-emacs@gnu.org; Sat, 02 Oct 2021 11:02:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mWgWY-0005bp-HT for bug-gnu-emacs@gnu.org; Sat, 02 Oct 2021 11:02:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 02 Oct 2021 15:02:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50946 X-GNU-PR-Package: emacs Original-Received: via spool by 50946-submit@debbugs.gnu.org id=B50946.163318686721492 (code B ref 50946); Sat, 02 Oct 2021 15:02:02 +0000 Original-Received: (at 50946) by debbugs.gnu.org; 2 Oct 2021 15:01:07 +0000 Original-Received: from localhost ([127.0.0.1]:60235 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWgVf-0005aZ-Bm for submit@debbugs.gnu.org; Sat, 02 Oct 2021 11:01:07 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:46558) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWgVc-0005Zh-Hl for 50946@debbugs.gnu.org; Sat, 02 Oct 2021 11:01:05 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:54612) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mWgVV-0004lh-CE; Sat, 02 Oct 2021 11:00:58 -0400 Original-Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3860 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mWgVR-0004m8-DJ; Sat, 02 Oct 2021 11:00:56 -0400 In-Reply-To: (message from Alan Mackenzie on Sat, 2 Oct 2021 14:45:52 +0000) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:216166 Archived-At: > Date: Sat, 2 Oct 2021 14:45:52 +0000 > Cc: joaotavora@gmail.com, 50946@debbugs.gnu.org > From: Alan Mackenzie > > > > 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