From 789e0764fa257609917b8797589c45c18b0adf8b Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Tue, 31 Oct 2017 11:48:08 +0900 Subject: [PATCH] Fix isf-panel-efl crash when typing in zcaron character Add return value checking routine for lower_bound function and update lookup table to have its values sorted properly. Change-Id: I5c33558d317bce0073efc7a970b11a3070f32472 --- ism/src/scim_event.cpp | 2 +- ism/src/scim_keyevent_data.h | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ism/src/scim_event.cpp b/ism/src/scim_event.cpp index d52db4b..a5eea71 100644 --- a/ism/src/scim_event.cpp +++ b/ism/src/scim_event.cpp @@ -301,7 +301,7 @@ scim_string_to_key (KeyEvent &key, const String & str) key.code = p->value; } else if (it->length () >= 6 && (*it)[0] == '0' && ((*it)[1] == 'x' || (*it)[1] == 'X')){ key.code = strtol (it->c_str () + 2, NULL, 16); - } else if (p && p->name && strcmp (p->name, "VoidSymbol") == 0) { + } else if (p != __scim_keys_by_name + SCIM_NUM_KEY_NAMES && p && p->name && strcmp (p->name, "VoidSymbol") == 0) { key.code = SCIM_KEY_VoidSymbol; void_symbol = true; } diff --git a/ism/src/scim_keyevent_data.h b/ism/src/scim_keyevent_data.h index dbd5256..6328217 100644 --- a/ism/src/scim_keyevent_data.h +++ b/ism/src/scim_keyevent_data.h @@ -3302,6 +3302,7 @@ static __KeyName __scim_keys_by_name [] = { { 0x0047, "G" }, { 0x02D5, "Gabovedot" }, { 0x02AB, "Gbreve" }, + { 0x16AA, "Gcaron" }, { 0x03AB, "Gcedilla" }, { 0x02D8, "Gcircumflex" }, { 0x15D0, "Georgian_an" }, @@ -3575,6 +3576,7 @@ static __KeyName __scim_keys_by_name [] = { { 0x02A9, "Iabovedot" }, { 0x00CD, "Iacute" }, { 0x1ECA, "Ibelowdot" }, + { 0x16A6, "Ibreve" }, { 0x00CE, "Icircumflex" }, { 0x00CF, "Idiaeresis" }, { 0x00CC, "Igrave" }, @@ -3672,6 +3674,7 @@ static __KeyName __scim_keys_by_name [] = { { 0x004F, "O" }, { 0x13BC, "OE" }, { 0x00D3, "Oacute" }, + { 0x16AF, "Obarred" }, { 0x1ECC, "Obelowdot" }, { 0x00D4, "Ocircumflex" }, { 0x1ED0, "Ocircumflexacute" }, @@ -3736,7 +3739,6 @@ static __KeyName __scim_keys_by_name [] = { { 0xFF55, "Prior" }, { 0x0051, "Q" }, { 0x16A5, "Qabovedot" }, - { 0x16A6, "Ibreve" }, { 0x0052, "R" }, { 0x01C0, "Racute" }, { 0x01D8, "Rcaron" }, @@ -3934,8 +3936,6 @@ static __KeyName __scim_keys_by_name [] = { { 0xFF28, "Zenkaku" }, { 0xFF2A, "Zenkaku_Hankaku" }, { 0x16A9, "Zstroke" }, - { 0x16AA, "Gcaron" }, - { 0x16AF, "Obarred" }, { 0x0061, "a" }, { 0x00E1, "aacute" }, { 0x1EA1, "abelowdot" }, @@ -4111,6 +4111,7 @@ static __KeyName __scim_keys_by_name [] = { { 0x0067, "g" }, { 0x02F5, "gabovedot" }, { 0x02BB, "gbreve" }, + { 0x16BA, "gcaron" }, { 0x03BB, "gcedilla" }, { 0x02F8, "gcircumflex" }, { 0x0060, "grave" }, @@ -4175,6 +4176,7 @@ static __KeyName __scim_keys_by_name [] = { { 0x0069, "i" }, { 0x00ED, "iacute" }, { 0x1ECB, "ibelowdot" }, + { 0x16B6, "ibreve" }, { 0x00EE, "icircumflex" }, { 0x08CF, "identical" }, { 0x00EF, "idiaeresis" }, @@ -4319,7 +4321,9 @@ static __KeyName __scim_keys_by_name [] = { { 0x06B0, "numerosign" }, { 0x006F, "o" }, { 0x00F3, "oacute" }, + { 0x16BF, "obarred" }, { 0x1ECD, "obelowdot" }, + { 0x16BD, "ocaron" }, { 0x00F4, "ocircumflex" }, { 0x1ED1, "ocircumflexacute" }, { 0x1ED9, "ocircumflexbelowdot" }, @@ -4490,7 +4494,6 @@ static __KeyName __scim_keys_by_name [] = { { 0x12B8, "wgrave" }, { 0x0078, "x" }, { 0x16B3, "xabovedot" }, - { 0x16B6, "ibreve" }, { 0x0079, "y" }, { 0x00FD, "yacute" }, { 0x1EF5, "ybelowdot" }, @@ -4504,10 +4507,7 @@ static __KeyName __scim_keys_by_name [] = { { 0x01BF, "zabovedot" }, { 0x01BC, "zacute" }, { 0x01BE, "zcaron" }, - { 0x16B9, "zstroke" }, - { 0x16BA, "gcaron" }, - { 0x16BD, "ocaron" }, - { 0x16BF, "obarred" } + { 0x16B9, "zstroke" } }; static __KeyName __scim_key_mask_names [] = -- 2.7.4