mirror of
https://github.com/MariaDB/server.git
synced 2025-08-30 11:22:14 +03:00
Bug #6819 Some ujis characters cannot be inserted into table
Allow to insert not-assigned UJIS codes.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -8243,7 +8243,6 @@ my_jisx0212_uni_onechar(int code){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
EUC-JP encoding subcomponents:
|
EUC-JP encoding subcomponents:
|
||||||
[x00-x7F] # ASCII/JIS-Roman (one-byte/character)
|
[x00-x7F] # ASCII/JIS-Roman (one-byte/character)
|
||||||
@@ -8252,6 +8251,47 @@ my_jisx0212_uni_onechar(int code){
|
|||||||
[xA1-xFE][xA1-xFE] # JIS X 0208:1997 (two bytes/char)
|
[xA1-xFE][xA1-xFE] # JIS X 0208:1997 (two bytes/char)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
static
|
||||||
|
uint my_well_formed_len_ujis(CHARSET_INFO *cs __attribute__((unused)),
|
||||||
|
const char *beg, const char *end, uint pos)
|
||||||
|
{
|
||||||
|
const uchar *b= (uchar *) beg;
|
||||||
|
|
||||||
|
for ( ; pos && b < (uchar*) end; pos--, b++)
|
||||||
|
{
|
||||||
|
char *chbeg;
|
||||||
|
uint ch= *b;
|
||||||
|
|
||||||
|
if (ch <= 0x7F) /* one byte */
|
||||||
|
continue;
|
||||||
|
|
||||||
|
chbeg= (char *) b++;
|
||||||
|
if (b >= (uchar *) end) /* need more bytes */
|
||||||
|
return chbeg - beg; /* unexpected EOL */
|
||||||
|
|
||||||
|
if (ch == 0x8E) /* [x8E][xA0-xDF] */
|
||||||
|
{
|
||||||
|
if (*b >= 0xA0 && *b <= 0xDF)
|
||||||
|
continue;
|
||||||
|
return chbeg - beg; /* invalid sequence */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ch == 0x8F) /* [x8F][xA1-xFE][xA1-xFE] */
|
||||||
|
{
|
||||||
|
ch= *b++;
|
||||||
|
if (b >= (uchar*) end)
|
||||||
|
return chbeg - beg; /* unexpected EOL */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ch >= 0xA1 && ch <= 0xFE &&
|
||||||
|
*b >= 0xA1 && *b <= 0xFE) /* [xA1-xFE][xA1-xFE] */
|
||||||
|
continue;
|
||||||
|
return chbeg - beg; /* invalid sequence */
|
||||||
|
}
|
||||||
|
return b - (uchar *) beg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
uint my_numcells_eucjp(CHARSET_INFO *cs __attribute__((unused)),
|
uint my_numcells_eucjp(CHARSET_INFO *cs __attribute__((unused)),
|
||||||
const char *str, const char *strend)
|
const char *str, const char *strend)
|
||||||
@@ -8475,7 +8515,7 @@ static MY_CHARSET_HANDLER my_charset_handler=
|
|||||||
mbcharlen_ujis,
|
mbcharlen_ujis,
|
||||||
my_numchars_mb,
|
my_numchars_mb,
|
||||||
my_charpos_mb,
|
my_charpos_mb,
|
||||||
my_well_formed_len_mb,
|
my_well_formed_len_ujis,
|
||||||
my_lengthsp_8bit,
|
my_lengthsp_8bit,
|
||||||
my_numcells_eucjp,
|
my_numcells_eucjp,
|
||||||
my_mb_wc_euc_jp, /* mb_wc */
|
my_mb_wc_euc_jp, /* mb_wc */
|
||||||
|
Reference in New Issue
Block a user