]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/minibuf.c (Ftest_completion): Ignore non-string/symbol keys in hash
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 9 Apr 2013 20:10:47 +0000 (16:10 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 9 Apr 2013 20:10:47 +0000 (16:10 -0400)
tables.

Fixes: debbugs:14054
src/ChangeLog
src/minibuf.c

index 04dcee7b6eb32d04eeec46a2f5fab3df2d45cdc0..402792b54601229de7e0cb74ec83d331e2a3a80e 100644 (file)
@@ -1,3 +1,8 @@
+2013-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.c (Ftest_completion): Ignore non-string/symbol keys in hash
+       tables (bug#14054).
+
 2013-04-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * window.c (select_window): Don't record_buffer while the invariant is
index 68c39310f01f7a7bbce3f2ed82f99af5d8d06cdc..4cc1f8d435a32777038f0480b6014825dc24c7bb 100644 (file)
@@ -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))