diff options
author | bar@mysql.com <> | 2005-07-20 13:40:18 +0500 |
---|---|---|
committer | bar@mysql.com <> | 2005-07-20 13:40:18 +0500 |
commit | 8724c21bb3560f360fb27f2fc435b9a584cfe4dd (patch) | |
tree | 526110a5b4bb3328d5ad4efab94fd63bcd4d3387 /strings | |
parent | d4e0d60156707b01f7a67c48b99aae84bbf90ea6 (diff) | |
parent | 856432250045dc4db195b4b1dfa0885c646659db (diff) | |
download | mariadb-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.c | 7 | ||||
-rw-r--r-- | strings/ctype-gbk.c | 7 | ||||
-rw-r--r-- | strings/ctype-simple.c | 8 | ||||
-rw-r--r-- | strings/ctype-sjis.c | 7 |
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)) { |