From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.bugs Subject: bug#50946: Emacs-28: Inadequate coding in hack-elisp-shorthands Date: Sat, 2 Oct 2021 10:50:29 +0000 Message-ID: References: <831r54einq.fsf@gnu.org> <871r54xnds.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="20497"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 50946-done@debbugs.gnu.org To: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Oct 02 12:51:13 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 1mWcbp-000513-BQ for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 02 Oct 2021 12:51:13 +0200 Original-Received: from localhost ([::1]:53252 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mWcbn-0006Dm-G7 for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 02 Oct 2021 06:51:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:42170) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mWcbe-0006Bu-VT for bug-gnu-emacs@gnu.org; Sat, 02 Oct 2021 06:51:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:46455) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mWcbe-0006vY-Mm for bug-gnu-emacs@gnu.org; Sat, 02 Oct 2021 06:51:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mWcbe-00029g-Mn for bug-gnu-emacs@gnu.org; Sat, 02 Oct 2021 06:51:02 -0400 Resent-From: Alan Mackenzie Original-Sender: "Debbugs-submit" Resent-To: bug-gnu-emacs@gnu.org Resent-Date: Sat, 02 Oct 2021 10:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: cc-closed 50946 X-GNU-PR-Package: emacs Mail-Followup-To: 50946@debbugs.gnu.org, acm@muc.de, acm@muc.de Original-Received: via spool by 50946-done@debbugs.gnu.org id=D50946.16331718388238 (code D ref 50946); Sat, 02 Oct 2021 10:51:02 +0000 Original-Received: (at 50946-done) by debbugs.gnu.org; 2 Oct 2021 10:50:38 +0000 Original-Received: from localhost ([127.0.0.1]:58000 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWcbG-00028n-Bd for submit@debbugs.gnu.org; Sat, 02 Oct 2021 06:50:38 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:37763 helo=mail.muc.de) by debbugs.gnu.org with smtp (Exim 4.84_2) (envelope-from ) id 1mWcbE-00028L-Ae for 50946-done@debbugs.gnu.org; Sat, 02 Oct 2021 06:50:37 -0400 Original-Received: (qmail 83237 invoked by uid 3782); 2 Oct 2021 10:50:30 -0000 Original-Received: from acm.muc.de (p4fe15ae2.dip0.t-ipconnect.de [79.225.90.226]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Sat, 02 Oct 2021 12:50:29 +0200 Original-Received: (qmail 13595 invoked by uid 1000); 2 Oct 2021 10:50:29 -0000 Content-Disposition: inline In-Reply-To: <871r54xnds.fsf@gmail.com> X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de 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:216122 Archived-At: Hello, Joćo. On Sat, Oct 02, 2021 at 01:48:31 +0100, Joćo Tįvora wrote: > Eli Zaretskii writes: > >> Date: Fri, 1 Oct 2021 17:10:57 +0000 > >> From: Alan Mackenzie > >> In emacs -Q in the emacs-28 branch, create the following two line file, > >> foobar.el, and try to load it: > >> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > >> (defvar foo-baz "foobar-baz") > >> FOOBARELISP-SHORTHANDS: (("foo" . "foobar"))) > >> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > >> This will throw an error, but that isn't important. > >> What is important is that the symbol foobar-baz is created by the > >> elisp-shorthands facility. > >> This shouldn't happen since: > >> 1/- There is no Local Variables section. > >> 2/- There is no variable elisp-shorthands in that non-existent section. > >> The following errors are evident in hack-elisp-shorthands: > >> 1/- The code doesn't check for a correctly formatted Local Variables > >> section. > >> 2/- The code, even if it did check, would only check the last 3000 bytes > >> in the file. The section can occur anywhere in the last 3000 > >> CHARACTERS. > >> 3/- The code doesn't do a case-sensitive search for "elisp-shorthands". > >> 4/- The code doesn't check for "elisp-shorthands" being a complete > >> symbol. > >> 5/- The code doesn't even check that "elisp-shorthands" is in a comment. > > Thanks. > > Joćo, could you please look into this? > Done. No you're not. The bug is only partially fixed. Why did you not check your patch with me before closing the bug? I've reopened it. > In the Emacs 28 branch. All tests pass (except a strange 'seccomp' one > that never did). Let me know if some more bugs lurk. Not more bugs, just the original bug badly "fixed". > Addressed all the points except the last one which doesn't make much > sense, .... You did address it, since hack-local-variables--find-variables checks for the needed comment openers. > .... since normal `hack-local-variables` also doesn't do any such > check. In fact what I'm doing is re-using > hack-local-variables--find-variables from files.el, as I had wanted to > anyway. Why aren't you just using that function on the buffer anyway, instead of all this clumsy messing around with temporary buffers, file-attributes, and successive 100 bytes, and so on? All right. What is not fixed? 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. Have you checked that things work if the first byte in your temporary buffer isn't at the start of a character? Also, it is unclear whether the elisp-shorthands symbol on the first line of a file is valid. I think the intention is that it not be valid. However, the current version of the code will read it from the first line of a sufficiently small file. You should look at this. Possibly this needs to be clarified in the documentation for shorthands. I suggest you narrow the first line of the temporary buffer out in such circumstances. Better yet, dispense with all this clever stuff about 3000 bytes and 100 byte chunks, and just use hack-local-variables--find-variables on the file's buffer (which you'll have visited anyway, or shortly will visit)? > Joćo -- Alan Mackenzie (Nuremberg, Germany).