Index: src/udcutils.pas
===================================================================
--- src/udcutils.pas	(revision 7296)
+++ src/udcutils.pas	(working copy)
@@ -931,6 +931,24 @@
    Result := ord(pstr1[counter]) - ord(pstr2[counter]);
  end;
 
+function LocalCompareTextWideString(const s1, s2 : WideString): PtrInt;
+begin
+{$if fpc_fullversion >= 30001}
+  Result := WideStringManager.CompareWideStringProc(s1, s2, [coIgnoreCase]);
+{$else fpc_fullversion}
+  Result := WideStringManager.CompareTextWideStringProc(s1, s2);
+{$endif}
+end;
+
+function LocalCompareWideString(const s1, s2 : WideString): PtrInt;
+begin
+{$if fpc_fullversion >= 30001}
+  Result := WideStringManager.CompareWideStringProc(s1, s2, []);
+{$else fpc_fullversion}
+  Result := WideStringManager.CompareTextWideStringProc(s1, s2);
+{$endif}
+end;
+
 function StrFloatCmpW(str1, str2: PWideChar; CaseSensitivity: TCaseSensitivity): PtrInt;
 var
   is_digit1, is_digit2: boolean;
@@ -953,8 +971,8 @@
 begin
   // Set up compare function
   case CaseSensitivity of
-    cstNotSensitive: str_cmp:= WideStringManager.CompareTextWideStringProc;
-    cstLocale:       str_cmp:= WideStringManager.CompareWideStringProc;
+    cstNotSensitive: str_cmp:= @LocalCompareTextWideString;
+    cstLocale:       str_cmp:= @LocalCompareWideString;
     cstCharValue:    str_cmp:= @WideStrComp;
     else
       raise Exception.Create('Invalid CaseSensitivity parameter');
