diff options
Diffstat (limited to 'rtl/inc/ustrings.inc')
-rw-r--r-- | rtl/inc/ustrings.inc | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/rtl/inc/ustrings.inc b/rtl/inc/ustrings.inc index c5c52b2f4d..09ea7dd0df 100644 --- a/rtl/inc/ustrings.inc +++ b/rtl/inc/ustrings.inc @@ -817,7 +817,7 @@ begin len := length(src); { make sure we don't dereference src if it can be nil (JM) } if len > 0 then - widestringmanager.ansi2widemoveproc(pchar(@src[1]),StringCodePage(src),temp,len); + widestringmanager.ansi2widemoveproc(pchar(@src[1]),TranslatePlaceholderCP(StringCodePage(src)),temp,len); len := length(temp); if len > length(res) then len := length(res); @@ -1351,7 +1351,7 @@ end; {$ifndef FPC_HAS_SETSTRING_UNICODESTR_PUNICODECHAR} {$define FPC_HAS_SETSTRING_UNICODESTR_PUNICODECHAR} -Procedure SetString (Out S : UnicodeString; Buf : PUnicodeChar; Len : SizeInt); +Procedure {$ifdef FPC_HAS_CPSTRING}fpc_setstring_unicodestr_pwidechar{$else}SetString{$endif}(Out S : UnicodeString; Buf : PUnicodeChar; Len : SizeInt); {$ifdef FPC_HAS_CPSTRING} compilerproc; {$endif FPC_HAS_CPSTRING} begin SetLength(S,Len); If (Buf<>Nil) and (Len>0) then @@ -1362,7 +1362,7 @@ end; {$ifndef FPC_HAS_SETSTRING_UNICODESTR_PCHAR} {$define FPC_HAS_SETSTRING_UNICODESTR_PCHAR} -Procedure SetString (Out S : UnicodeString; Buf : PChar; Len : SizeInt); +Procedure {$ifdef FPC_HAS_CPSTRING}fpc_setstring_unicodestr_pansichar{$else}SetString{$endif}(Out S : UnicodeString; Buf : PChar; Len : SizeInt); {$ifdef FPC_HAS_CPSTRING} compilerproc; {$endif FPC_HAS_CPSTRING} begin If (Buf<>Nil) and (Len>0) then widestringmanager.Ansi2UnicodeMoveProc(Buf,DefaultSystemCodePage,S,Len) @@ -2286,19 +2286,22 @@ function StringCodePage(const S: UnicodeString): TSystemCodePage; overload; {$warnings off} -function GenericUnicodeCase(const s : UnicodeString) : UnicodeString; +function StubUnicodeCase(const s : UnicodeString) : UnicodeString; begin unimplementedunicodestring; end; - -function CompareUnicodeString(const s1, s2 : UnicodeString) : PtrInt; +function StubCompareUnicodeString(const s1, s2 : UnicodeString) : PtrInt; begin unimplementedunicodestring; end; +function StubWideCase(const s: WideString): WideString; + begin + unimplementedunicodestring; + end; -function CompareTextUnicodeString(const s1, s2 : UnicodeString): PtrInt; +function StubCompareWideString(const s1, s2 : WideString) : PtrInt; begin unimplementedunicodestring; end; @@ -2307,24 +2310,23 @@ function CompareTextUnicodeString(const s1, s2 : UnicodeString): PtrInt; procedure initunicodestringmanager; begin {$ifndef HAS_WIDESTRINGMANAGER} - widestringmanager.Unicode2AnsiMoveProc:=@DefaultUnicode2AnsiMove; - widestringmanager.Ansi2UnicodeMoveProc:=@DefaultAnsi2UnicodeMove; - widestringmanager.UpperUnicodeStringProc:=@GenericUnicodeCase; - widestringmanager.LowerUnicodeStringProc:=@GenericUnicodeCase; -{$endif HAS_WIDESTRINGMANAGER} - widestringmanager.CompareUnicodeStringProc:=@CompareUnicodeString; - widestringmanager.CompareTextUnicodeStringProc:=@CompareTextUnicodeString; - {$ifdef FPC_WIDESTRING_EQUAL_UNICODESTRING} -{$ifndef HAS_WIDESTRINGMANAGER} - widestringmanager.Wide2AnsiMoveProc:=@defaultUnicode2AnsiMove; widestringmanager.Ansi2WideMoveProc:=@defaultAnsi2UnicodeMove; - widestringmanager.UpperWideStringProc:=@GenericUnicodeCase; - widestringmanager.LowerWideStringProc:=@GenericUnicodeCase; -{$endif HAS_WIDESTRINGMANAGER} - widestringmanager.CompareWideStringProc:=@CompareUnicodeString; - widestringmanager.CompareTextWideStringProc:=@CompareTextUnicodeString; +{$else FPC_WIDESTRING_EQUAL_UNICODESTRING} + widestringmanager.Ansi2WideMoveProc:=@DefaultAnsi2WideMove; {$endif FPC_WIDESTRING_EQUAL_UNICODESTRING} + widestringmanager.Wide2AnsiMoveProc:=@DefaultUnicode2AnsiMove; + widestringmanager.UpperWideStringProc:=@StubWideCase; + widestringmanager.LowerWideStringProc:=@StubWideCase; + widestringmanager.Unicode2AnsiMoveProc:=@DefaultUnicode2AnsiMove; + widestringmanager.Ansi2UnicodeMoveProc:=@DefaultAnsi2UnicodeMove; + widestringmanager.UpperUnicodeStringProc:=@StubUnicodeCase; + widestringmanager.LowerUnicodeStringProc:=@StubUnicodeCase; +{$endif HAS_WIDESTRINGMANAGER} + widestringmanager.CompareWideStringProc:=@StubCompareWideString; + widestringmanager.CompareTextWideStringProc:=@StubCompareWideString; + widestringmanager.CompareUnicodeStringProc:=@StubCompareUnicodeString; + widestringmanager.CompareTextUnicodeStringProc:=@StubCompareUnicodeString; widestringmanager.CharLengthPCharProc:=@DefaultCharLengthPChar; widestringmanager.CodePointLengthProc:=@DefaultCodePointLength; widestringmanager.GetStandardCodePageProc:=@DefaultGetStandardCodePage; |