|
@@ -680,15 +680,14 @@ begin
|
|
not winwidestringalloc and
|
|
not winwidestringalloc and
|
|
{$endif MSWINDOWS}
|
|
{$endif MSWINDOWS}
|
|
(PWideRec(Pointer(S)-WideFirstOff)^.Ref = 1) then
|
|
(PWideRec(Pointer(S)-WideFirstOff)^.Ref = 1) then
|
|
-{$endif FPC_WINLIKEWIDESTRING}
|
|
|
|
begin
|
|
begin
|
|
Dec(Pointer(S),WideFirstOff);
|
|
Dec(Pointer(S),WideFirstOff);
|
|
if L*sizeof(WideChar)+WideRecLen>MemSize(Pointer(S)) then
|
|
if L*sizeof(WideChar)+WideRecLen>MemSize(Pointer(S)) then
|
|
reallocmem(pointer(S), L*sizeof(WideChar)+WideRecLen);
|
|
reallocmem(pointer(S), L*sizeof(WideChar)+WideRecLen);
|
|
Inc(Pointer(S), WideFirstOff);
|
|
Inc(Pointer(S), WideFirstOff);
|
|
end
|
|
end
|
|
-{$ifndef FPC_WINLIKEWIDESTRING}
|
|
|
|
else
|
|
else
|
|
|
|
+{$endif FPC_WINLIKEWIDESTRING}
|
|
begin
|
|
begin
|
|
{ Reallocation is needed... }
|
|
{ Reallocation is needed... }
|
|
Temp:=Pointer(NewWideString(L));
|
|
Temp:=Pointer(NewWideString(L));
|
|
@@ -697,13 +696,13 @@ begin
|
|
if l < succ(length(s)) then
|
|
if l < succ(length(s)) then
|
|
movelen := l
|
|
movelen := l
|
|
{ also move terminating null }
|
|
{ also move terminating null }
|
|
- else movelen := succ(length(s));
|
|
|
|
|
|
+ else
|
|
|
|
+ movelen := succ(length(s));
|
|
Move(Pointer(S)^,Temp^,movelen * Sizeof(WideChar));
|
|
Move(Pointer(S)^,Temp^,movelen * Sizeof(WideChar));
|
|
end;
|
|
end;
|
|
fpc_widestr_decr_ref(Pointer(S));
|
|
fpc_widestr_decr_ref(Pointer(S));
|
|
Pointer(S):=Temp;
|
|
Pointer(S):=Temp;
|
|
end
|
|
end
|
|
-{$endif FPC_WINLIKEWIDESTRING}
|
|
|
|
;
|
|
;
|
|
{ Force nil termination in case it gets shorter }
|
|
{ Force nil termination in case it gets shorter }
|
|
PWord(Pointer(S)+l*sizeof(WideChar))^:=0;
|
|
PWord(Pointer(S)+l*sizeof(WideChar))^:=0;
|