From a0c62e4e28c04d29c20734815bb0fd65fa9970d9 Mon Sep 17 00:00:00 2001 From: proski Date: Thu, 11 Jun 2009 16:17:45 +0000 Subject: [PATCH] 2009-06-11 Pavel Roskin * term/i386/pc/serial.c (serial_translate_key_sequence): Avoid casts to short - they are not portable and cause warnings. Fix use of uninitialized values in input_buf. Use ARRAY_SIZE. --- ChangeLog | 6 ++++++ term/i386/pc/serial.c | 36 +++++++++++++++--------------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index f93ec8ca5..29a50817f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-06-11 Pavel Roskin + + * term/i386/pc/serial.c (serial_translate_key_sequence): Avoid + casts to short - they are not portable and cause warnings. Fix + use of uninitialized values in input_buf. Use ARRAY_SIZE. + 2009-06-11 Vladimir Serbinenko Drivemap fixes diff --git a/term/i386/pc/serial.c b/term/i386/pc/serial.c index 6105e223a..195f73670 100644 --- a/term/i386/pc/serial.c +++ b/term/i386/pc/serial.c @@ -112,6 +112,7 @@ serial_hw_put (const int c) static void serial_translate_key_sequence (void) { + unsigned int i; static struct { char key; @@ -141,34 +142,27 @@ serial_translate_key_sequence (void) {('6' | ('~' << 8)), 3} }; - /* The buffer must start with "ESC [". */ - if (*((unsigned short *) input_buf) != ('\e' | ('[' << 8))) + if (npending < 3) return; - if (npending >= 3) - { - unsigned int i; + /* The buffer must start with "ESC [". */ + if (input_buf[0] != '\e' || input_buf[1] != '[') + return; - for (i = 0; - i < sizeof (three_code_table) / sizeof (three_code_table[0]); - i++) - if (three_code_table[i].key == input_buf[2]) - { - input_buf[0] = three_code_table[i].ascii; - npending -= 2; - grub_memmove (input_buf + 1, input_buf + 3, npending - 1); - return; - } - } + for (i = 0; ARRAY_SIZE (three_code_table); i++) + if (three_code_table[i].key == input_buf[2]) + { + input_buf[0] = three_code_table[i].ascii; + npending -= 2; + grub_memmove (input_buf + 1, input_buf + 3, npending - 1); + return; + } if (npending >= 4) { - unsigned int i; - short key = *((short *) (input_buf + 2)); + short key = input_buf[3] | (input_buf[4] << 8); - for (i = 0; - i < sizeof (four_code_table) / sizeof (four_code_table[0]); - i++) + for (i = 0; i < ARRAY_SIZE (four_code_table); i++) if (four_code_table[i].key == key) { input_buf[0] = four_code_table[i].ascii;