# HG changeset patch # User Richard M. Stallman # Date 923427362 0 # Node ID 9fb4096c5f77973e03432aeb4deea93e216328d6 # Parent 9944f4ca2ee5763cbcffb1c41f64a91e06bcdc59 (Faccessible_keymaps): Really initialize i_byte. Convert 0200 to meta only in a unibyte string. (Fkey_description): Likewise. diff -r 9944f4ca2ee5 -r 9fb4096c5f77 src/keymap.c --- a/src/keymap.c Tue Apr 06 19:06:27 1999 +0000 +++ b/src/keymap.c Tue Apr 06 19:36:02 1999 +0000 @@ -1472,15 +1472,17 @@ Lisp_Object copy; copy = Fmake_vector (make_number (XSTRING (prefix)->size), Qnil); - for (i = 0, i_byte; i < XSTRING (prefix)->size;) + for (i = 0, i_byte = 0; i < XSTRING (prefix)->size;) { int i_before = i; if (STRING_MULTIBYTE (prefix)) FETCH_STRING_CHAR_ADVANCE (c, prefix, i, i_byte); else - c = XSTRING (prefix)->data[i++]; - if (c & 0200) - c ^= 0200 | meta_modifier; + { + c = XSTRING (prefix)->data[i++]; + if (c & 0200) + c ^= 0200 | meta_modifier; + } XVECTOR (copy)->contents[i_before] = make_number (c); } prefix = copy; @@ -1704,7 +1706,7 @@ { Lisp_Object vector; vector = Fmake_vector (Flength (keys), Qnil); - for (i = 0; i < XSTRING (keys)->size; ) + for (i = 0, i_byte = 0; i < XSTRING (keys)->size; ) { int c; int i_before = i; @@ -1712,13 +1714,13 @@ if (STRING_MULTIBYTE (keys)) FETCH_STRING_CHAR_ADVANCE (c, keys, i, i_byte); else - c = XSTRING (keys)->data[i++]; - - if (c & 0x80) - XSETFASTINT (XVECTOR (vector)->contents[i_before], - meta_modifier | (c & ~0x80)); - else - XSETFASTINT (XVECTOR (vector)->contents[i_before], c); + { + c = XSTRING (keys)->data[i++]; + if (c & 0200) + c ^= 0200 | meta_modifier; + } + + XSETFASTINT (XVECTOR (vector)->contents[i_before], c); } keys = vector; }