summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mysql.com>2010-12-15 12:58:37 +0300
committerAlexander Barkov <bar@mysql.com>2010-12-15 12:58:37 +0300
commit7f0236de48902e1cf4f628f73cf20c18884c02d9 (patch)
tree0de41b05dcf2dbbe39a571585f3f4b4da019f3bc /strings
parentbdd4ab874bae07d82e306d5df83b6ead1ec875c8 (diff)
downloadmariadb-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.c5
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;