]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
util:charset: strncasecmp_ldb avoids iconv for ASCII
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Tue, 14 May 2024 09:33:16 +0000 (21:33 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 22 May 2024 23:12:32 +0000 (23:12 +0000)
This is a common case, and we can save a bit of work.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/util/charset/util_unistr.c

index fa3b0f2a7a0710eaebdac9bbdaa61fc73ecbdf7a..c042bead4edb04908c4efc938d70761542c4faba 100644 (file)
@@ -250,6 +250,10 @@ _PUBLIC_ int strncasecmp_ldb(const char *s1,
                } else if (*s1 == ' ') {
                        EAT_SPACE(s1, len1, ends_in_space1);
                        c1 = ends_in_space1 ? 0 : ' ';
+               } else if ((*s1 & 0x80) == 0) {
+                       c1 = *s1;
+                       s1++;
+                       len1--;
                } else {
                        c1 = next_codepoint_handle_ext(iconv_handle, s1, len1,
                                                       CH_UNIX, &cs1);
@@ -264,6 +268,10 @@ _PUBLIC_ int strncasecmp_ldb(const char *s1,
                } else if (*s2 == ' ') {
                        EAT_SPACE(s2, len2, ends_in_space2);
                        c2 = ends_in_space2 ? 0 : ' ';
+               } else if ((*s2 & 0x80) == 0) {
+                       c2 = *s2;
+                       s2++;
+                       len2--;
                } else {
                        c2 = next_codepoint_handle_ext(iconv_handle, s2, len2,
                                                       CH_UNIX, &cs2);