memfs: fix Unicode case-insensitive comparison

This commit is contained in:
Bill Zissimopoulos 2017-09-29 16:27:28 -07:00
parent 9a4f04f46a
commit f8a05eae95

View File

@ -212,9 +212,15 @@ int MemfsFileNameCompare(PWSTR a0, int alen, PWSTR b0, int blen, BOOLEAN CaseIns
len = alen < blen ? alen : blen;
/* we should still be in the C locale */
if (CaseInsensitive)
res = _wcsnicmp(a, b, len);
{
/* better Unicode comparison when case-insensitive */
res = CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, a, alen, b, blen);
if (0 != res)
res -= 2;
else
res = _wcsnicmp(a, b, len);
}
else
res = wcsncmp(a, b, len);