From a8036e4076f6d43537905e3aaf400992fdef38e4 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 9 Apr 2013 16:10:47 -0400 Subject: [PATCH] * src/minibuf.c (Ftest_completion): Ignore non-string/symbol keys in hash tables. Fixes: debbugs:14054 --- src/ChangeLog | 5 +++++ src/minibuf.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 04dcee7b6eb..402792b5460 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2013-04-09 Stefan Monnier + + * minibuf.c (Ftest_completion): Ignore non-string/symbol keys in hash + tables (bug#14054). + 2013-04-08 Stefan Monnier * window.c (select_window): Don't record_buffer while the invariant is diff --git a/src/minibuf.c b/src/minibuf.c index 68c39310f01..4cc1f8d435a 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -1800,17 +1800,21 @@ the values STRING, PREDICATE and `lambda'. */) { struct Lisp_Hash_Table *h = XHASH_TABLE (collection); i = hash_lookup (h, string, NULL); + Lisp_Object key = Qnil; if (i >= 0) tem = HASH_KEY (h, i); else for (i = 0; i < HASH_TABLE_SIZE (h); ++i) if (!NILP (HASH_HASH (h, i)) + && (key = HASH_KEY (h, i), + SYMBOLP (key) ? key = Fsymbol_name (key) : key, + STRINGP (key)) && EQ (Fcompare_strings (string, make_number (0), Qnil, - HASH_KEY (h, i), make_number (0) , Qnil, + key, make_number (0) , Qnil, completion_ignore_case ? Qt : Qnil), Qt)) { - tem = HASH_KEY (h, i); + tem = key; break; } if (!STRINGP (tem)) -- 2.39.2