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#51527: 29.0.50; (wrong-type-argument symbolp 1) lookup-key((keymap) [menu-bar buffer 1]) Date: Sun, 31 Oct 2021 16:21:47 +0200 Message-ID: <8335ohnukk.fsf@gnu.org> References: <87tugxodyn.fsf@gmail.com> <834k8xnxbt.fsf@gnu.org> <87lf29uwk9.fsf@gmail.com> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5669"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 51527-done@debbugs.gnu.org To: Dieter Deyke Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Oct 31 15:23:11 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 1mhBjr-0001GU-4S for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 31 Oct 2021 15:23:11 +0100 Original-Received: from localhost ([::1]:39652 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mhBjp-0003FQ-6e for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 31 Oct 2021 10:23:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33568) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhBji-0003F2-Km for bug-gnu-emacs@gnu.org; Sun, 31 Oct 2021 10:23:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:49444) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mhBji-0000Jr-B9 for bug-gnu-emacs@gnu.org; Sun, 31 Oct 2021 10:23:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mhBji-00021s-7R for bug-gnu-emacs@gnu.org; Sun, 31 Oct 2021 10:23:02 -0400 Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-To: bug-gnu-emacs@gnu.org Resent-Date: Sun, 31 Oct 2021 14:23:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: cc-closed 51527 X-GNU-PR-Package: emacs Mail-Followup-To: 51527@debbugs.gnu.org, eliz@gnu.org, dieter.deyke@gmail.com Original-Received: via spool by 51527-done@debbugs.gnu.org id=D51527.16356901337729 (code D ref 51527); Sun, 31 Oct 2021 14:23:02 +0000 Original-Received: (at 51527-done) by debbugs.gnu.org; 31 Oct 2021 14:22:13 +0000 Original-Received: from localhost ([127.0.0.1]:60989 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mhBiu-00020b-Pg for submit@debbugs.gnu.org; Sun, 31 Oct 2021 10:22:13 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:36104) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mhBit-00020O-6V for 51527-done@debbugs.gnu.org; Sun, 31 Oct 2021 10:22:11 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:54634) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhBin-0000FX-0W; Sun, 31 Oct 2021 10:22:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=WNXanPLo4iyi8HSUz8LY7kQk4eEV93RVcDD7lJpzm6k=; b=Gdqz3Qq4oDVF LEyZbbT2pLGJ7ktLbQr+m6sN2FGueSteBuLgTXbrfqOc+KTehwnokT3NpkLmIXVnN2ZLuPKMAckXF opcmxSn6QUgBtsQhkd7lLGCXwdqMtuWLZpjs1adYSGRZKB6Cm7AFvMDn9Bv6mPSANhc50CIbFfi3t 8q0Stt1uRb4a5AQhcZ+Y+xA5ZfqD3HIfn6s8qfMomjiqvHbcW5czHgEjXT0Xf5Xl4WuL7cYj7GgwM O2zQRKy63waTmsUjNCtGgaVNajyNEZSaso9VDkCZIeZ7dQpNW43W4d9MFUWrkXcp9+qYCXTiImL6n fNQ3NkXbcKG2ORysoUC7jw==; Original-Received: from [87.69.77.57] (port=4835 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 1mhBif-0000GE-B3; Sun, 31 Oct 2021 10:22:00 -0400 In-Reply-To: <87lf29uwk9.fsf@gmail.com> (message from Dieter Deyke on Sun, 31 Oct 2021 14:56:54 +0100) 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:218685 Archived-At: > From: Dieter Deyke > Cc: 51527@debbugs.gnu.org > Date: Sun, 31 Oct 2021 14:56:54 +0100 > > > Thanks. > > > > Does the patch below fix this? > > > > diff --git a/src/keymap.c b/src/keymap.c > > index 5ff13ba..4d8944d 100644 > > --- a/src/keymap.c > > +++ b/src/keymap.c > > @@ -1314,36 +1314,44 @@ DEFUN ("lookup-key", Flookup_key, Slookup_key, 2, 3, 0, > > "foo-bar-baz". */ > > for (int i = 0; i < key_len; i++) > > { > > - Lisp_Object key_item = Fsymbol_name (AREF (key, i)); > > - Lisp_Object new_item; > > - if (!STRING_MULTIBYTE (key_item)) > > - new_item = Fdowncase (key_item); > > + Lisp_Object item = AREF (key, i); > > + if (!SYMBOLP (item)) > > + ASET (new_key, i, item); > > else > > { > > - USE_SAFE_ALLOCA; > > - ptrdiff_t size = SCHARS (key_item), n; > > - if (INT_MULTIPLY_WRAPV (size, MAX_MULTIBYTE_LENGTH, &n)) > > - n = PTRDIFF_MAX; > > - unsigned char *dst = SAFE_ALLOCA (n); > > - unsigned char *p = dst; > > - ptrdiff_t j_char = 0, j_byte = 0; > > - > > - while (j_char < size) > > + Lisp_Object key_item = Fsymbol_name (item); > > + Lisp_Object new_item; > > + if (!STRING_MULTIBYTE (key_item)) > > + new_item = Fdowncase (key_item); > > + else > > { > > - int ch = fetch_string_char_advance (key_item, &j_char, &j_byte); > > - Lisp_Object ch_conv = CHAR_TABLE_REF (tables[tbl_num], ch); > > - if (!NILP (ch_conv)) > > - CHAR_STRING (XFIXNUM (ch_conv), p); > > - else > > - CHAR_STRING (ch, p); > > - p = dst + j_byte; > > + USE_SAFE_ALLOCA; > > + ptrdiff_t size = SCHARS (key_item), n; > > + if (INT_MULTIPLY_WRAPV (size, MAX_MULTIBYTE_LENGTH, &n)) > > + n = PTRDIFF_MAX; > > + unsigned char *dst = SAFE_ALLOCA (n); > > + unsigned char *p = dst; > > + ptrdiff_t j_char = 0, j_byte = 0; > > + > > + while (j_char < size) > > + { > > + int ch = fetch_string_char_advance (key_item, > > + &j_char, &j_byte); > > + Lisp_Object ch_conv = CHAR_TABLE_REF (tables[tbl_num], > > + ch); > > + if (!NILP (ch_conv)) > > + CHAR_STRING (XFIXNUM (ch_conv), p); > > + else > > + CHAR_STRING (ch, p); > > + p = dst + j_byte; > > + } > > + new_item = make_multibyte_string ((char *) dst, > > + SCHARS (key_item), > > + SBYTES (key_item)); > > + SAFE_FREE (); > > } > > - new_item = make_multibyte_string ((char *) dst, > > - SCHARS (key_item), > > - SBYTES (key_item)); > > - SAFE_FREE (); > > + ASET (new_key, i, Fintern (new_item, Qnil)); > > } > > - ASET (new_key, i, Fintern (new_item, Qnil)); > > } > > > > /* Check for match. */ > > @@ -1356,6 +1364,9 @@ DEFUN ("lookup-key", Flookup_key, Slookup_key, 2, 3, 0, > > "foo-bar-baz". */ > > for (int i = 0; i < key_len; i++) > > { > > + if (!SYMBOLP (AREF (new_key, i))) > > + continue; > > + > > Lisp_Object lc_key = Fsymbol_name (AREF (new_key, i)); > > > > /* If there are no spaces in this symbol, just skip it. */ > > > > Yes, the patch fixed it. Thanks, installed. A variant of the fix was also installed on the release branch. Closing.