diff --git a/src/util.cpp b/src/util.cpp index b2fb04299..969266b4a 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -62,6 +62,13 @@ int wcsfilecmp(const wchar_t *a, const wchar_t *b) { if (retval || *a == 0 || *b == 0) break; } + // Fast path: Skip towupper. + if (*a == *b) { + a++; + b++; + continue; + } + wint_t al = towupper(*a); wint_t bl = towupper(*b); // Sort dashes after Z - see #5634 @@ -115,6 +122,13 @@ int wcsfilecmp_glob(const wchar_t *a, const wchar_t *b) { if (retval || *a == 0 || *b == 0) break; } + // Fast path: Skip towlower. + if (*a == *b) { + a++; + b++; + continue; + } + wint_t al = towlower(*a); wint_t bl = towlower(*b); if (al < bl) {