# HG changeset patch # User Richard M. Stallman # Date 861490348 0 # Node ID 2da99276d613ef12118f081ca8aab6b712b65bbe # Parent 0c38918fbf13ab342b9376c9b8a07fa3c9ae42f3 (Faccessible_keymaps): Convert PREFIX to a vector at the beginning, if it has any definition. diff -r 0c38918fbf13 -r 2da99276d613 src/keymap.c --- a/src/keymap.c Fri Apr 18 19:12:24 1997 +0000 +++ b/src/keymap.c Sat Apr 19 22:52:28 1997 +0000 @@ -1300,7 +1300,26 @@ It might even give us a list that isn't a keymap. */ tem = get_keymap_1 (tem, 0, 0); if (!NILP (tem)) - maps = Fcons (Fcons (prefix, tem), Qnil); + { + /* Convert PREFIX to a vector now, so that later on + we don't have to deal with the possibility of a string. */ + if (STRINGP (prefix)) + { + int i; + Lisp_Object copy; + + copy = Fmake_vector (make_number (XSTRING (prefix)->size), Qnil); + for (i = 0; i < XSTRING (prefix)->size; i++) + { + int c = XSTRING (prefix)->data[i]; + if (c & 0200) + c ^= 0200 | meta_modifier; + XVECTOR (copy)->contents[i] = make_number (c); + } + prefix = copy; + } + maps = Fcons (Fcons (prefix, tem), Qnil); + } else return Qnil; }