summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorKonstantin Osipov <kostja@sun.com>2009-11-20 17:18:37 +0300
committerKonstantin Osipov <kostja@sun.com>2009-11-20 17:18:37 +0300
commit34b11fb627df93e395158a27f48baa1c049ddf85 (patch)
tree126efa7bce0c3c70a1d3c3cb0099c6615f951e39 /strings
parent3937a79886f9c3a1e0c998e66565a71b4a87d984 (diff)
parent5aeeaaf507ac87f6ff56806fe8a356cea7d4a48f (diff)
downloadmariadb-git-34b11fb627df93e395158a27f48baa1c049ddf85.tar.gz
Merge with next-mr
Diffstat (limited to 'strings')
-rw-r--r--strings/ctype-bin.c5
-rw-r--r--strings/ctype-latin1.c5
-rw-r--r--strings/ctype-mb.c5
-rw-r--r--strings/ctype-simple.c10
4 files changed, 8 insertions, 17 deletions
diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c
index 95d97af2bfb..3b6a977e47c 100644
--- a/strings/ctype-bin.c
+++ b/strings/ctype-bin.c
@@ -278,14 +278,11 @@ void my_hash_sort_8bit_bin(CHARSET_INFO *cs __attribute__((unused)),
{
const uchar *pos = key;
- key+= len;
-
/*
Remove trailing spaces. We have to do this to be able to compare
'A ' and 'A' as identical
*/
- while (key > pos && key[-1] == ' ')
- key--;
+ key= skip_trailing_space(key, len);
for (; pos < (uchar*) key ; pos++)
{
diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c
index e5333c4101b..dbd91c09637 100644
--- a/strings/ctype-latin1.c
+++ b/strings/ctype-latin1.c
@@ -678,13 +678,12 @@ void my_hash_sort_latin1_de(CHARSET_INFO *cs __attribute__((unused)),
const uchar *key, size_t len,
ulong *nr1, ulong *nr2)
{
- const uchar *end= key+len;
+ const uchar *end;
/*
Remove end space. We have to do this to be able to compare
'AE' and 'Ä' as identical
*/
- while (end > key && end[-1] == ' ')
- end--;
+ end= skip_trailing_space(key, len);
for (; key < end ; key++)
{
diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c
index 903811e2ab9..b0f7c297260 100644
--- a/strings/ctype-mb.c
+++ b/strings/ctype-mb.c
@@ -469,14 +469,11 @@ static void my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
{
const uchar *pos = key;
- key+= len;
-
/*
Remove trailing spaces. We have to do this to be able to compare
'A ' and 'A' as identical
*/
- while (key > pos && key[-1] == ' ')
- key--;
+ key= skip_trailing_space(key, len);
for (; pos < (uchar*) key ; pos++)
{
diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c
index 4f3aaa6f668..6ff8c83dcf7 100644
--- a/strings/ctype-simple.c
+++ b/strings/ctype-simple.c
@@ -304,14 +304,13 @@ void my_hash_sort_simple(CHARSET_INFO *cs,
ulong *nr1, ulong *nr2)
{
register uchar *sort_order=cs->sort_order;
- const uchar *end= key + len;
+ const uchar *end;
/*
Remove end space. We have to do this to be able to compare
'A ' and 'A' as identical
*/
- while (end > key && end[-1] == ' ')
- end--;
+ end= skip_trailing_space(key, len);
for (; key < (uchar*) end ; key++)
{
@@ -1165,9 +1164,8 @@ size_t my_well_formed_len_8bit(CHARSET_INFO *cs __attribute__((unused)),
size_t my_lengthsp_8bit(CHARSET_INFO *cs __attribute__((unused)),
const char *ptr, size_t length)
{
- const char *end= ptr+length;
- while (end > ptr && end[-1] == ' ')
- end--;
+ const char *end;
+ end= (const char *) skip_trailing_space((const uchar *)ptr, length);
return (size_t) (end-ptr);
}