summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2015-07-06 18:59:33 +0400
committerAlexander Barkov <bar@mariadb.org>2015-07-06 18:59:33 +0400
commit3a606ba210a0433229284fbcd26b7e2336f8f6c5 (patch)
treec2498bc798179b367cc378191d7790e8927e80ea /strings
parentb2e324a21fbf481bccd15f9ee4bab819afefbed6 (diff)
downloadmariadb-git-3a606ba210a0433229284fbcd26b7e2336f8f6c5.tar.gz
Fixing a bug in MDEV-8418 (utf16, utf16le) and MDEV-8417 (utf8mb4).
Fixing non-BMP characters to have the same weight, as it was before MDEV-8418 and MDEV-8417.
Diffstat (limited to 'strings')
-rw-r--r--strings/ctype-ucs2.c4
-rw-r--r--strings/ctype-utf8.c5
2 files changed, 4 insertions, 5 deletions
diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c
index 90aa1a93bed..41f6a90506a 100644
--- a/strings/ctype-ucs2.c
+++ b/strings/ctype-ucs2.c
@@ -1216,7 +1216,7 @@ static inline int my_weight_mb2_utf16mb2_general_ci(uchar b0, uchar b1)
#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16_general_ci
#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf16mb2_general_ci(b0,b1)
-#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF16_WC4(b0, b1, b2, b3))
+#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER
#include "strcoll.ic"
#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16_bin
@@ -1665,7 +1665,7 @@ struct charset_info_st my_charset_utf16_bin=
#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16le_general_ci
#define WEIGHT_ILSEQ(x) (0xFF0000 + (uchar) (x))
#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf16mb2_general_ci(b1,b0)
-#define WEIGHT_MB4(b0,b1,b2,b3) ((int) MY_UTF16_WC4(b1, b0, b3, b2))
+#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER
#include "strcoll.ic"
#define MY_FUNCTION_NAME(x) my_ ## x ## _utf16le_bin
diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c
index 2fc53e84b5c..259928130b9 100644
--- a/strings/ctype-utf8.c
+++ b/strings/ctype-utf8.c
@@ -7775,10 +7775,9 @@ size_t my_well_formed_len_utf8mb4(CHARSET_INFO *cs,
#define WEIGHT_MB2(b0,b1) my_weight_mb2_utf8_general_ci(b0,b1)
#define WEIGHT_MB3(b0,b1,b2) my_weight_mb3_utf8_general_ci(b0,b1,b2)
/*
- There is no mapping between code point and weight for non-BMP characters
- in utf8mb4_general_ci. Just using code point as weight.
+ All non-BMP characters have the same weight.
*/
-#define WEIGHT_MB4(b0,b1,b2,b3) UTF8MB4_CODE(b0,b1,b2,b3)
+#define WEIGHT_MB4(b0,b1,b2,b3) MY_CS_REPLACEMENT_CHARACTER
#include "strcoll.ic"