summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorbar@mysql.com <>2005-07-20 13:40:18 +0500
committerbar@mysql.com <>2005-07-20 13:40:18 +0500
commit8724c21bb3560f360fb27f2fc435b9a584cfe4dd (patch)
tree526110a5b4bb3328d5ad4efab94fd63bcd4d3387 /strings
parentd4e0d60156707b01f7a67c48b99aae84bbf90ea6 (diff)
parent856432250045dc4db195b4b1dfa0885c646659db (diff)
downloadmariadb-git-8724c21bb3560f360fb27f2fc435b9a584cfe4dd.tar.gz
Merge mysql.com:/usr/home/bar/mysql-4.1
into mysql.com:/usr/home/bar/mysql-5.0
Diffstat (limited to 'strings')
-rw-r--r--strings/ctype-big5.c7
-rw-r--r--strings/ctype-gbk.c7
-rw-r--r--strings/ctype-simple.c8
-rw-r--r--strings/ctype-sjis.c7
4 files changed, 25 insertions, 4 deletions
diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c
index 01ecd63d52b..d311859907f 100644
--- a/strings/ctype-big5.c
+++ b/strings/ctype-big5.c
@@ -401,9 +401,14 @@ static my_bool my_like_range_big5(CHARSET_INFO *cs __attribute__((unused)),
uint res_length, char *min_str,char *max_str,
uint *min_length,uint *max_length)
{
- const char *end=ptr+ptr_length;
+ const char *end;
char *min_org=min_str;
char *min_end=min_str+res_length;
+ uint charlen= my_charpos(cs, ptr, ptr+ptr_length, res_length/cs->mbmaxlen);
+
+ if (charlen < ptr_length)
+ ptr_length= charlen;
+ end= ptr + ptr_length;
for (; ptr != end && min_str != min_end ; ptr++)
{
diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c
index 4150f198722..f941aabaf69 100644
--- a/strings/ctype-gbk.c
+++ b/strings/ctype-gbk.c
@@ -2714,9 +2714,14 @@ static my_bool my_like_range_gbk(CHARSET_INFO *cs __attribute__((unused)),
uint res_length, char *min_str,char *max_str,
uint *min_length,uint *max_length)
{
- const char *end=ptr+ptr_length;
+ const char *end;
char *min_org=min_str;
char *min_end=min_str+res_length;
+ uint charlen= my_charpos(cs, ptr, ptr+ptr_length, res_length/cs->mbmaxlen);
+
+ if (charlen < ptr_length)
+ ptr_length= charlen;
+ end= ptr + ptr_length;
for (; ptr != end && min_str != min_end ; ptr++)
{
diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c
index fe514186deb..85f792b5607 100644
--- a/strings/ctype-simple.c
+++ b/strings/ctype-simple.c
@@ -1034,9 +1034,15 @@ my_bool my_like_range_simple(CHARSET_INFO *cs,
char *min_str,char *max_str,
uint *min_length,uint *max_length)
{
- const char *end=ptr+ptr_length;
+ const char *end;
char *min_org=min_str;
char *min_end=min_str+res_length;
+#ifdef USE_MB
+ uint charlen= my_charpos(cs, ptr, ptr+ptr_length, res_length/cs->mbmaxlen);
+ if (charlen < ptr_length)
+ ptr_length= charlen;
+#endif
+ end= ptr + ptr_length;
for (; ptr != end && min_str != min_end ; ptr++)
{
diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c
index 161f75ca936..76e91b89c25 100644
--- a/strings/ctype-sjis.c
+++ b/strings/ctype-sjis.c
@@ -330,9 +330,14 @@ static my_bool my_like_range_sjis(CHARSET_INFO *cs __attribute__((unused)),
uint res_length, char *min_str,char *max_str,
uint *min_length,uint *max_length)
{
- const char *end=ptr+ptr_length;
+ const char *end;
char *min_org=min_str;
char *min_end=min_str+res_length;
+ uint charlen= my_charpos(cs, ptr, ptr+ptr_length, res_length/cs->mbmaxlen);
+
+ if (charlen < ptr_length)
+ ptr_length= charlen;
+ end= ptr + ptr_length;
while (ptr < end && min_str < min_end) {
if (ismbchar_sjis(cs, ptr, end)) {