* fix concat_multi for widestrings, patch was already done for ansistrings fixes 8292

git-svn-id: trunk@6384 -
This commit is contained in:
peter 2007-02-09 12:28:22 +00:00
parent 99bc1ccb75
commit ebccbf720c

View File

@ -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