* bug#51527: 29.0.50; (wrong-type-argument symbolp 1) lookup-key((keymap) [menu-bar buffer 1])
@ 2021-10-31 7:22 Dieter Deyke
2021-10-31 13:22 ` Eli Zaretskii
0 siblings, 1 reply; 4+ messages in thread
From: Dieter Deyke @ 2021-10-31 7:22 UTC (permalink / raw)
To: 51527
Using emacs -Q (build from git master) works fine. Starting it with my
customizations fails:
Debugger entered--Lisp error: (wrong-type-argument symbolp 1)
lookup-key((keymap) [menu-bar buffer 1])
substitute-key-definition-key(("Most recently used (1)" keymap "Most recently used (1)" ("*Messages*" "*% *Messages*" . msb--select-buffer)) beginning-of-line allout-beginning-of-line [menu-bar buffer 1] (keymap))
#f(compiled-function (char defn) #<bytecode -0x109d1dd74c334677>)(1 ("Most recently used (1)" keymap "Most recently used (1)" ("*Messages*" "*% *Messages*" . msb--select-buffer)))
map-keymap(#f(compiled-function (char defn) #<bytecode -0x109d1dd74c334677>) (keymap "Select Buffer" (1 "Most recently used (1)" keymap "Most recently used (1)" ("*Messages*" "*% *Messages*" . msb--select-buffer)) (separator "--") (2 "Other non-file buffers (2)" keymap "Other non-file buffers (2)" ("*Messages*" "*% *Messages*" . msb--select-buffer) ("*scratch*" " *scratch*" . msb--select-buffer)) (separator "--") (toggle "*Files by directory*" . msb--toggle-menu-type)))
substitute-key-definition(beginning-of-line allout-beginning-of-line (keymap) (keymap "Select Buffer" (1 "Most recently used (1)" keymap "Most recently used (1)" ("*Messages*" "*% *Messages*" . msb--select-buffer)) (separator "--") (2 "Other non-file buffers (2)" keymap "Other non-file buffers (2)" ("*Messages*" "*% *Messages*" . msb--select-buffer) ("*scratch*" " *scratch*" . msb--select-buffer)) (separator "--") (toggle "*Files by directory*" . msb--toggle-menu-type)) [menu-bar buffer])
substitute-key-definition-key(("Buffers" keymap "Select Buffer" (1 "Most recently used (1)" keymap "Most recently used (1)" ("*Messages*" "*% *Messages*" . msb--select-buffer)) (separator "--") (2 "Other non-file buffers (2)" keymap "Other non-file buffers (2)" ("*Messages*" "*% *Messages*" . msb--select-buffer) ("*scratch*" " *scratch*" . msb--select-buffer)) (separator "--") (toggle "*Files by directory*" . msb--toggle-menu-type)) beginning-of-line allout-beginning-of-line [menu-bar buffer] (keymap))
#f(compiled-function (char defn) #<bytecode -0x109d1de21c365477>)(buffer ("Buffers" keymap "Select Buffer" (1 "Most recently used (1)" keymap "Most recently used (1)" ("*Messages*" "*% *Messages*" . msb--select-buffer)) (separator "--") (2 "Other non-file buffers (2)" keymap "Other non-file buffers (2)" ("*Messages*" "*% *Messages*" . msb--select-buffer) ("*scratch*" " *scratch*" . msb--select-buffer)) (separator "--") (toggle "*Files by directory*" . msb--toggle-menu-type)))
map-keymap(#f(compiled-function (char defn) #<bytecode -0x109d1de21c365477>) (keymap ... ... ... ... ... ... ... "menu-bar"))
substitute-key-definition(beginning-of-line allout-beginning-of-line (keymap) (keymap ... ... ... ... ... ... ... "menu-bar") [menu-bar])
substitute-key-definition-key((keymap ... ... ... ... ... ... ... "menu-bar") beginning-of-line allout-beginning-of-line [menu-bar] (keymap))
#f(compiled-function (char defn) #<bytecode -0x109d1de6574bd777>)(menu-bar (keymap ... ... ... ... ... ... ... "menu-bar"))
map-keymap(#f(compiled-function (char defn) #<bytecode -0x109d1de6574bd777>) (keymap #^[nil nil keymap
#^^[3 0 set-mark-command move-beginning-of-line backward-char mode-specific-command-prefix delete-char move-end-of-line forward-char keyboard-quit help-command indent-for-tab-command electric-newline-and-maybe-indent kill-line recenter-top-bottom ...] #^^[1 0 #^^[2 0
#^^[3 0 set-mark-command move-beginning-of-line backward-char mode-specific-command-prefix delete-char move-end-of-line forward-char keyboard-quit help-command indent-for-tab-command electric-newline-and-maybe-indent kill-line recenter-top-bottom ...] self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command ...] self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command ...] self-insert-command self-insert-command self-insert-comman
d self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command ...] ... ... ... ... ... ... ... ... ... ... ... ... ...))
substitute-key-definition(beginning-of-line allout-beginning-of-line (keymap) (keymap #^[nil nil keymap
#^^[3 0 set-mark-command move-beginning-of-line backward-char mode-specific-command-prefix delete-char move-end-of-line forward-char keyboard-quit help-command indent-for-tab-command electric-newline-and-maybe-indent kill-line recenter-top-bottom ...] #^^[1 0 #^^[2 0
#^^[3 0 set-mark-command move-beginning-of-line backward-char mode-specific-command-prefix delete-char move-end-of-line forward-char keyboard-quit help-command indent-for-tab-command electric-newline-and-maybe-indent kill-line recenter-top-bottom ...] self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command ...] self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command ...] self-insert-command self-insert-command self-insert-comman
d self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command self-insert-command ...] ... ... ... ... ... ... ... ... ... ... ... ... ...))
allout-compose-and-institute-keymap()
byte-code("\300 \210\301\302\303\304\305DD\306\307\310\311\312\313\300&\11\210\314\315\316\317\307\320%\210\301\321\303\304\322DD\323\324\325\307\315\311\312\313\300&\13\210\301\326\303..." [allout-compose-and-institute-keymap custom-declare-variable allout-command-prefix funcall function #f(compiled-function () #<bytecode 0x1f4000162f154>) "Key sequence to be used as prefix for outline mode..." :type string :group allout-keybindings :set define-widget allout-keybindings-binding lazy "Structure of allout keybindings customization item..." (repeat (list (string :tag "Key" :value "[(meta control shift ?f)]") (function :tag "Function name" :value allout-forward-current-level))) allout-prefixed-keybindings #f(compiled-function () #<bytecode 0x1f400016fe914>) "Allout-mode key bindings that ar
e prefixed with `a..." :version "24.1" allout-unprefixed-keybindings #f(compiled-function () #<bytecode 0x1f400016fe914>) "Allout-mode functions bound to keys without any ad..."] 12)
require(allout)
eval-buffer(#<buffer *load*-108979> nil "/home/deyke/.emacs.d/elisp/emacsrc.el" nil t) ; Reading at buffer position 15036
load-with-code-conversion("/home/deyke/.emacs.d/elisp/emacsrc.el" "/home/deyke/.emacs.d/elisp/emacsrc.el" nil nil)
load("emacsrc")
load-library("emacsrc")
eval-buffer(#<buffer *load*> nil "/home/deyke/.emacs.d/init.el" nil t) ; Reading at buffer position 446
load-with-code-conversion("/home/deyke/.emacs.d/init.el" "/home/deyke/.emacs.d/init.el" t t)
load("/home/deyke/.emacs.d/init" noerror nomessage)
startup--load-user-init-file(#f(compiled-function () #<bytecode 0x1ab71f8309045ed0>) #f(compiled-function () #<bytecode -0x1f3c686ddc0ca9b5>) t)
command-line()
normal-top-level()
It fails even after deleting all .elc files and deleting .session.
I do not know how to narrow this done.
In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.30, cairo version 1.16.0)
of 2021-10-22 built on deyke2
Repository revision: 357d273d2e312fca7b187dca45585cbdbf4c6469
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Debian GNU/Linux bookworm/sid
Configured using:
'configure --prefix=/usr/local/emacs'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS
X11 XDBE XIM XPM GTK3 ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Info
Minor modes in effect:
global-flycheck-mode: t
delete-selection-mode: t
cua-mode: t
msb-mode: t
icomplete-mode: t
which-function-mode: t
display-time-mode: t
tooltip-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tab-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
buffer-read-only: t
line-number-mode: t
transient-mark-mode: t
Load-path shadows:
/home/deyke/.emacs.d/elpa/transient-20211029.1405/transient hides /usr/local/emacs/share/emacs/29.0.50/lisp/transient
Features:
(shadow emacsbug url-http url-gw url-auth gnus-gravatar gnus-picon sort
gnus-cite smiley w3m-form w3m timezone w3m-hist w3m-fb bookmark-w3m
w3m-ems w3m-favicon w3m-image tab-line w3m-proc w3m-util mm-archive
mail-extr gnus-bcklg gnus-ml disp-table nndraft nnmh gnus-agent
gnus-srvr gnus-score score-mode nnvirtual nnfolder qp gnus-cache gnutls
network-stream nsm gravatar dns url-cache spam-stat smtpmail sendmail
nnrss nnml gnus-topic gnus-msg gnus-async nntp flycheck dash session
infodoc-theme appt view mule-util solar cal-dst holidays hol-loaddefs
vc-fossil org-duration diary-lib diary-loaddefs cal-iso vc-git diff-mode
vc-dispatcher org-element avl-tree generator ol-eww eww xdg url-queue
mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-search
eieio-opt speedbar ezimage dframe ol-docview doc-view jka-compr
image-mode exif ol-bibtex ol-bbdb ol-w3m ol-doi org-link-doi cl-extra
help-mode face-remap generic-x org-contacts org-capture org-agenda
org-refile gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum
shr kinsoku svg dom gnus-group gnus-undo gnus-start gnus-dbus dbus xml
gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int
gnus-range message rmc puny rfc822 mml mml-sec epa derived epg rfc6068
epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader gnus-win gnus nnheader wid-edit gnus-util rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
text-property-search org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-footnote org-src ob-comint org-pcomplete pcomplete comint
ansi-color org-list org-faces org-entities noutline outline org-version
ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex ol rx org-keys
oc org-compat advice org-macs org-loaddefs format-spec find-func
cal-menu calendar cal-loaddefs cl rcirc parse-time iso8601 time-date
ring netrc emms-volume easy-mmode emms-volume-sndioctl
emms-volume-mixerctl emms-volume-pulse emms-volume-amixer
emms-metaplaylist-mode emms-playlist-mode emms-player-vlc
emms-player-mpv emms-playing-time emms-info emms-later-do
emms-player-mplayer emms-player-simple emms-source-playlist
emms-source-file thingatpt locate emms-setup emms emms-compat bongo
lastfm-submit pcase volume allout esh-mode esh-cmd esh-ext esh-opt
esh-proc esh-io esh-arg esh-module esh-groups esh-util server delsel
cua-base msb icomplete mic-paren german-holidays dired dired-loaddefs
which-func imenu time w3m-load info package browse-url url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util mailcap url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs eieio-loaddefs password-cache json map url-vars seq
gv subr-x byte-opt bytecomp byte-compile cconv cl-loaddefs cl-lib
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer cl-generic
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)
Memory information:
((conses 16 425885 41475)
(symbols 48 62982 19)
(strings 32 177549 14837)
(string-bytes 1 6186011)
(vectors 16 76257)
(vector-slots 8 1793185 201963)
(floats 8 3527 50415)
(intervals 56 1268 124)
(buffers 992 29))
--
Dieter Deyke
mailto:dieter.deyke@gmail.com
Get my Gnupg key:
gpg --keyserver keys.gnupg.net --recv-keys B116EA20
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#51527: 29.0.50; (wrong-type-argument symbolp 1) lookup-key((keymap) [menu-bar buffer 1])
2021-10-31 7:22 bug#51527: 29.0.50; (wrong-type-argument symbolp 1) lookup-key((keymap) [menu-bar buffer 1]) Dieter Deyke
@ 2021-10-31 13:22 ` Eli Zaretskii
2021-10-31 13:56 ` Dieter Deyke
0 siblings, 1 reply; 4+ messages in thread
From: Eli Zaretskii @ 2021-10-31 13:22 UTC (permalink / raw)
To: Dieter Deyke; +Cc: 51527
> From: Dieter Deyke <dieter.deyke@gmail.com>
> Date: Sun, 31 Oct 2021 08:22:56 +0100
>
>
> Using emacs -Q (build from git master) works fine. Starting it with my
> customizations fails:
>
> Debugger entered--Lisp error: (wrong-type-argument symbolp 1)
> lookup-key((keymap) [menu-bar buffer 1])
> substitute-key-definition-key(("Most recently used (1)" keymap "Most recently used (1)" ("*Messages*" "*% *Messages*" . msb--select-buffer)) beginning-of-line allout-beginning-of-line [menu-bar buffer 1] (keymap))
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. */
^ permalink raw reply related [flat|nested] 4+ messages in thread
* bug#51527: 29.0.50; (wrong-type-argument symbolp 1) lookup-key((keymap) [menu-bar buffer 1])
2021-10-31 13:22 ` Eli Zaretskii
@ 2021-10-31 13:56 ` Dieter Deyke
2021-10-31 14:21 ` Eli Zaretskii
0 siblings, 1 reply; 4+ messages in thread
From: Dieter Deyke @ 2021-10-31 13:56 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 51527
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Dieter Deyke <dieter.deyke@gmail.com>
>> Date: Sun, 31 Oct 2021 08:22:56 +0100
>>
>>
>> Using emacs -Q (build from git master) works fine. Starting it with my
>> customizations fails:
>>
>> Debugger entered--Lisp error: (wrong-type-argument symbolp 1)
>> lookup-key((keymap) [menu-bar buffer 1])
>> substitute-key-definition-key(("Most recently used (1)" keymap
>> "Most recently used (1)" ("*Messages*" "*% *Messages*"
>> . msb--select-buffer)) beginning-of-line allout-beginning-of-line
>> [menu-bar buffer 1] (keymap))
>
> 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.
Thank you, Eli.
--
Dieter Deyke
mailto:dieter.deyke@gmail.com
Get my Gnupg key:
gpg --keyserver keys.gnupg.net --recv-keys B116EA20
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#51527: 29.0.50; (wrong-type-argument symbolp 1) lookup-key((keymap) [menu-bar buffer 1])
2021-10-31 13:56 ` Dieter Deyke
@ 2021-10-31 14:21 ` Eli Zaretskii
0 siblings, 0 replies; 4+ messages in thread
From: Eli Zaretskii @ 2021-10-31 14:21 UTC (permalink / raw)
To: Dieter Deyke; +Cc: 51527-done
> From: Dieter Deyke <dieter.deyke@gmail.com>
> 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.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-10-31 14:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-10-31 7:22 bug#51527: 29.0.50; (wrong-type-argument symbolp 1) lookup-key((keymap) [menu-bar buffer 1]) Dieter Deyke
2021-10-31 13:22 ` Eli Zaretskii
2021-10-31 13:56 ` Dieter Deyke
2021-10-31 14:21 ` Eli Zaretskii
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.