summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorevgen@moonbone.local <>2006-06-30 02:02:20 +0400
committerevgen@moonbone.local <>2006-06-30 02:02:20 +0400
commit9fd38baf1349f8c42395029c83423605e9a80a44 (patch)
treea42a51d56ed0f7ffafd94f882db0f7c9001251df /strings
parent3447374939b638448b04716a5189292808c5c6e3 (diff)
parent5f5c3f9ceb187e82eeb104ddde9594eefb02e373 (diff)
downloadmariadb-git-9fd38baf1349f8c42395029c83423605e9a80a44.tar.gz
Merge moonbone.local:/home/evgen/bk-trees/mysql-5.0-opt
into moonbone.local:/work/merge-5.0
Diffstat (limited to 'strings')
-rw-r--r--strings/Makefile.am6
-rw-r--r--strings/ctype-mb.c20
2 files changed, 12 insertions, 14 deletions
diff --git a/strings/Makefile.am b/strings/Makefile.am
index c43cf0f290a..7ee115c09e5 100644
--- a/strings/Makefile.am
+++ b/strings/Makefile.am
@@ -66,12 +66,6 @@ conf_to_src_LDFLAGS= @NOINST_LDFLAGS@
#strtoull.o: @CHARSET_OBJS@
-if ASSEMBLER
-# On Linux gcc can compile the assembly files
-%.o : %.s
- $(AS) $(ASFLAGS) -o $@ $<
-endif
-
FLAGS=$(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) @NOINST_LDFLAGS@
str_test: str_test.c $(pkglib_LIBRARIES)
diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c
index 36b52826486..0f95a688d85 100644
--- a/strings/ctype-mb.c
+++ b/strings/ctype-mb.c
@@ -24,12 +24,12 @@
void my_caseup_str_mb(CHARSET_INFO * cs, char *str)
{
register uint32 l;
- register char *end=str+strlen(str); /* BAR TODO: remove strlen() call */
register uchar *map=cs->to_upper;
while (*str)
{
- if ((l=my_ismbchar(cs, str,end)))
+ /* Pointing after the '\0' is safe here. */
+ if ((l=my_ismbchar(cs, str, str + cs->mbmaxlen)))
str+=l;
else
{
@@ -42,12 +42,12 @@ void my_caseup_str_mb(CHARSET_INFO * cs, char *str)
void my_casedn_str_mb(CHARSET_INFO * cs, char *str)
{
register uint32 l;
- register char *end=str+strlen(str);
register uchar *map=cs->to_lower;
while (*str)
{
- if ((l=my_ismbchar(cs, str,end)))
+ /* Pointing after the '\0' is safe here. */
+ if ((l=my_ismbchar(cs, str, str + cs->mbmaxlen)))
str+=l;
else
{
@@ -101,15 +101,18 @@ uint my_casedn_mb(CHARSET_INFO * cs, char *src, uint srclen,
return srclen;
}
+/*
+ my_strcasecmp_mb() returns 0 if strings are equal, non-zero otherwise.
+ */
int my_strcasecmp_mb(CHARSET_INFO * cs,const char *s, const char *t)
{
register uint32 l;
- register const char *end=s+strlen(s);
register uchar *map=cs->to_upper;
- while (s<end)
+ while (*s && *t)
{
- if ((l=my_ismbchar(cs, s,end)))
+ /* Pointing after the '\0' is safe here. */
+ if ((l=my_ismbchar(cs, s, s + cs->mbmaxlen)))
{
while (l--)
if (*s++ != *t++)
@@ -120,7 +123,8 @@ int my_strcasecmp_mb(CHARSET_INFO * cs,const char *s, const char *t)
else if (map[(uchar) *s++] != map[(uchar) *t++])
return 1;
}
- return *t;
+ /* At least one of '*s' and '*t' is zero here. */
+ return (*t != *s);
}