diff options
-rw-r--r-- | camel/ChangeLog | 4 | ||||
-rw-r--r-- | camel/camel-search-private.c | 22 |
2 files changed, 20 insertions, 6 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index e2b0834e56..0dca380b40 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -8,6 +8,10 @@ (camel_search_header_match): Strip leading spaces before doing anything else. Also use vlen and mlen so as to not need to do 500 strlen()'s. + (camel_ustrcasecmp): Don't get_utf8() for the 2 strings in the + comparison part of the loop because of short-circuit expression + evaluation. (blame JPR if this is the wrong term!) + (camel_ustrncasecmp): Same. 2001-02-06 Jeffrey Stedfast <fejj@ximian.com> diff --git a/camel/camel-search-private.c b/camel/camel-search-private.c index a9ac42a9bb..f002bc3ad4 100644 --- a/camel/camel-search-private.c +++ b/camel/camel-search-private.c @@ -307,13 +307,18 @@ camel_ustrcasecmp (const char *s1, const char *s2) CAMEL_SEARCH_COMPARE (s1, s2, NULL); - while ((u1 = utf8_get(&s1)) && (u2 = utf8_get(&s2))) { - u1 = unicode_tolower(u1); - u2 = unicode_tolower(u2); + u1 = utf8_get (&s1); + u2 = utf8_get (&s2); + while (u1 && u2) { + u1 = unicode_tolower (u1); + u2 = unicode_tolower (u2); if (u1 < u2) return -1; else if (u1 > u2) return 1; + + u1 = utf8_get (&s1); + u2 = utf8_get (&s2); } /* end of one of the strings ? */ @@ -332,14 +337,19 @@ camel_ustrncasecmp (const char *s1, const char *s2, size_t len) CAMEL_SEARCH_COMPARE (s1, s2, NULL); - while (len > 0 && (u1 = utf8_get(&s1)) && (u2 = utf8_get(&s2))) { - u1 = unicode_tolower(u1); - u2 = unicode_tolower(u2); + u1 = utf8_get (&s1); + u2 = utf8_get (&s2); + while (len > 0 && u1 && u2) { + u1 = unicode_tolower (u1); + u2 = unicode_tolower (u2); if (u1 < u2) return -1; else if (u1 > u2) return 1; + len--; + u1 = utf8_get (&s1); + u2 = utf8_get (&s2); } if (len == 0) |