X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=chise.c;h=04b504181893c5ded74f8a0c95744a8bfaff2c2d;hb=b588d4fcce8c0b33590a3e9e89b6dfc5f4977f8c;hp=4c790e1d75374b30c3d5a168f9972a72d6f437f6;hpb=db1704e5e7f01c31ffb68c1f9f9a4e2777d34def;p=chise%2Flibchise.git diff --git a/chise.c b/chise.c index 4c790e1..04b5041 100644 --- a/chise.c +++ b/chise.c @@ -52,8 +52,8 @@ chise_dt_get_char (CHISE_Decoding_Table *db, int code_point) if (!status) { unsigned char *str - = (unsigned char *)chise_value_to_c_string (&valdatum); - int len = strlen (str); + = (unsigned char *)chise_value_data (&valdatum); + int len = strnlen (str, chise_value_size (&valdatum)); int i = 0; if ( (len >= 2) && (str[i++] == '?') ) @@ -67,6 +67,16 @@ chise_dt_get_char (CHISE_Decoding_Table *db, int code_point) if (len < 3) return -1; c = str[i++]; + if (c == '^') + { + if (len < 4) + return -1; + c = str[i++]; + if (c == '?') + return 0x7F; + else + return c & (0x80 | 0x1F); + } } if ( c < 0xC0 ) {