Fix isf-panel-efl crash when typing in zcaron character 88/158888/4
authorJi-hoon Lee <dalton.lee@samsung.com>
Tue, 31 Oct 2017 02:48:08 +0000 (11:48 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Tue, 7 Nov 2017 00:47:55 +0000 (00:47 +0000)
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
ism/src/scim_keyevent_data.h

index d52db4b..a5eea71 100644 (file)
@@ -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;
         }
index dbd5256..6328217 100644 (file)
@@ -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 [] =