mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-18 12:31:40 +02:00
* fix concat_multi for widestrings, patch was already done for ansistrings fixes 8292
git-svn-id: trunk@6384 -
This commit is contained in:
parent
99bc1ccb75
commit
ebccbf720c
@ -501,6 +501,7 @@ Var
|
|||||||
p,pc : pointer;
|
p,pc : pointer;
|
||||||
Size,NewLen,
|
Size,NewLen,
|
||||||
OldDestLen : SizeInt;
|
OldDestLen : SizeInt;
|
||||||
|
destcopy : widestring;
|
||||||
begin
|
begin
|
||||||
if high(sarr)=0 then
|
if high(sarr)=0 then
|
||||||
begin
|
begin
|
||||||
@ -509,17 +510,19 @@ begin
|
|||||||
end;
|
end;
|
||||||
lowstart:=low(sarr);
|
lowstart:=low(sarr);
|
||||||
if Pointer(DestS)=Pointer(sarr[lowstart]) then
|
if Pointer(DestS)=Pointer(sarr[lowstart]) then
|
||||||
|
inc(lowstart);
|
||||||
|
{ Check for another reuse, then we can't use
|
||||||
|
the append optimization }
|
||||||
|
for i:=lowstart to high(sarr) do
|
||||||
begin
|
begin
|
||||||
inc(lowstart);
|
if Pointer(DestS)=Pointer(sarr[i]) then
|
||||||
{ Check for another reuse, then we can't use
|
|
||||||
the append optimization }
|
|
||||||
for i:=lowstart to high(sarr) do
|
|
||||||
begin
|
begin
|
||||||
if Pointer(DestS)=Pointer(sarr[i]) then
|
{ if DestS is used somewhere in the middle of the expression,
|
||||||
begin
|
we need to make sure the original string still exists after
|
||||||
lowstart:=low(sarr);
|
we empty/modify DestS }
|
||||||
break;
|
destcopy:=dests;
|
||||||
end;
|
lowstart:=low(sarr);
|
||||||
|
break;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{ Start with empty DestS if we start with concatting
|
{ Start with empty DestS if we start with concatting
|
||||||
|
Loading…
Reference in New Issue
Block a user