diff options
author | Alexander Barkov <bar@mysql.com> | 2010-12-15 12:58:37 +0300 |
---|---|---|
committer | Alexander Barkov <bar@mysql.com> | 2010-12-15 12:58:37 +0300 |
commit | 7f0236de48902e1cf4f628f73cf20c18884c02d9 (patch) | |
tree | 0de41b05dcf2dbbe39a571585f3f4b4da019f3bc /strings | |
parent | bdd4ab874bae07d82e306d5df83b6ead1ec875c8 (diff) | |
download | mariadb-git-7f0236de48902e1cf4f628f73cf20c18884c02d9.tar.gz |
Bug#58321 No warning when characters outside BMP0 is converted to UCS2
Problem: when inserting supplementary characters to an UCS2 column,
character was silently shrinked to 16-bit value.
Fix: produce a warning on attempt to insert a supplementary character,
and convert to question mark.
@ mysql-test/r/ctype_many.result
@ mysql-test/t/ctype_many.test
Adding tests
@ strings/ctype-ucs2.c
Check if wc is greater than the highest value supported (0xFFFF),
return MY_CS_ILUNI if true.
Diffstat (limited to 'strings')
-rw-r--r-- | strings/ctype-ucs2.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c index d9f546d435e..1eb4b8de7ed 100644 --- a/strings/ctype-ucs2.c +++ b/strings/ctype-ucs2.c @@ -2693,7 +2693,10 @@ static int my_uni_ucs2(CHARSET_INFO *cs __attribute__((unused)) , { if ( r+2 > e ) return MY_CS_TOOSMALL2; - + + if (wc > 0xFFFF) /* UCS2 does not support characters outside BMP */ + return MY_CS_ILUNI; + r[0]= (uchar) (wc >> 8); r[1]= (uchar) (wc & 0xFF); return 2; |