Commit f40725af authored by unknown's avatar unknown
Browse files

Bug#12547: Inserting long string into varchar causes table crash in cp932

ctype-cp932.c:
  Decrement for "pos" variable disappered somehow.
  Restoring it back.
ctype_cp932.test: ctype_cp932.result:
  Adding test case.


strings/ctype-cp932.c:
  Bug#12547: Inserting long string into varchar causes table crash in cp932
  Decrement for "pos" variable disappered somehow.
  Restoring it back.
mysql-test/t/ctype_cp932.test:
  Adding test case.
mysql-test/r/ctype_cp932.result:
  Adding test case
parent 62d62278
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -11349,3 +11349,20 @@ cp932_bin 6109
cp932_bin	61
cp932_bin	6120
drop table t1;
create table t1 (col1 varchar(1)) character set cp932;
insert into t1 values ('a');
insert into t1 values ('ab');
Warnings:
Warning	1265	Data truncated for column 'col1' at row 1
select * from t1;
col1
a
a
insert into t1 values ('abc');
Warnings:
Warning	1265	Data truncated for column 'col1' at row 1
select * from t1;
col1
a
a
a
+10 −0
Original line number Diff line number Diff line
@@ -424,3 +424,13 @@ SET collation_connection='cp932_japanese_ci';
-- source include/ctype_filesort.inc
SET collation_connection='cp932_bin';
-- source include/ctype_filesort.inc

#
# Bug#12547: Inserting long string into varchar causes table crash in cp932
#
create table t1 (col1 varchar(1)) character set cp932;
insert into t1 values ('a');
insert into t1 values ('ab');
select * from t1;
insert into t1 values ('abc');
select * from t1;
+1 −1
Original line number Diff line number Diff line
@@ -5417,7 +5417,7 @@ uint my_well_formed_len_cp932(CHARSET_INFO *cs __attribute__((unused)),
{
  const char *b0= b;
  *error= 0;
  while (pos && b < e)
  while (pos-- && b < e)
  {
    /*
      Cast to int8 for extra safety.