Commit 46aa022a authored by unknown's avatar unknown
Browse files

ctype_sjis.result, ctype_sjis.test, ctype-sjis.c:

  Bug #6223 Japanese half-width kana characters get truncated. Bytes 0xA1..0xDF were not treated as a single byte sequence in a mistake.


strings/ctype-sjis.c:
  Bug #6223 Japanese half-width kana characters get truncated. Bytes 0xA1..0xDF were not treated as a single byte sequence in a mistake.
mysql-test/t/ctype_sjis.test:
  Bug #6223 Japanese half-width kana characters get truncated. Bytes 0xA1..0xDF were not treated as a single byte sequence in a mistake.
mysql-test/r/ctype_sjis.result:
  Bug #6223 Japanese half-width kana characters get truncated. Bytes 0xA1..0xDF were not treated as a single byte sequence in a mistake.
parent f8a875a2
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -60,3 +60,14 @@ hex(c)
9353
9373
drop table t1;
SET NAMES sjis;
CREATE TABLE t1 (
c char(16) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=sjis;
insert into t1 values(0xb1),(0xb2),(0xb3);
select hex(c) from t1;
hex(c)
B1
B2
B3
drop table t1;
+11 −0
Original line number Diff line number Diff line
@@ -51,3 +51,14 @@ insert into t1 values (0x9353);
insert into t1 values (0x9373);
select hex(c) from t1;
drop table t1;

#
# Bug #6223 Japanese half-width kana characters get truncated
#
SET NAMES sjis;
CREATE TABLE t1 (
 c char(16) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=sjis;
insert into t1 values(0xb1),(0xb2),(0xb3);
select hex(c) from t1;
drop table t1;
+7 −2
Original line number Diff line number Diff line
@@ -4581,14 +4581,19 @@ uint my_well_formed_len_sjis(CHARSET_INFO *cs __attribute__((unused)),
    */
    if (((int8)b[0]) >= 0)
    {
      /* Single byte character */
      b+= 1;
      /* Single byte ascii character */
      b++;
    }
    else  if (issjishead((uchar)*b) && (e-b)>1 && issjistail((uchar)b[1]))
    {
      /* Double byte character */
      b+= 2;
    }
    else if (((uchar)*b) >= 0xA1 && ((uchar)*b) <= 0xDF)
    {
      /* Half width kana */
      b++;
    }
    else
    {
      /* Wrong byte sequence */