* 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,7 +510,6 @@ begin
end; end;
lowstart:=low(sarr); lowstart:=low(sarr);
if Pointer(DestS)=Pointer(sarr[lowstart]) then if Pointer(DestS)=Pointer(sarr[lowstart]) then
begin
inc(lowstart); inc(lowstart);
{ Check for another reuse, then we can't use { Check for another reuse, then we can't use
the append optimization } the append optimization }
@ -517,11 +517,14 @@ begin
begin begin
if Pointer(DestS)=Pointer(sarr[i]) then if Pointer(DestS)=Pointer(sarr[i]) then
begin begin
{ if DestS is used somewhere in the middle of the expression,
we need to make sure the original string still exists after
we empty/modify DestS }
destcopy:=dests;
lowstart:=low(sarr); lowstart:=low(sarr);
break; break;
end; end;
end; end;
end;
{ Start with empty DestS if we start with concatting { Start with empty DestS if we start with concatting
the first array element } the first array element }
if lowstart=low(sarr) then if lowstart=low(sarr) then