* concatcopy could release a wrong reference because the offset was

increased without restoring the original before the release of
    a temp
This commit is contained in:
peter 2001-10-20 17:22:57 +00:00
parent cea68ee35c
commit 6a42a332dd

View File

@ -1258,6 +1258,7 @@ implementation
var var
ecxpushed : boolean; ecxpushed : boolean;
oldsourceoffset,
helpsize : longint; helpsize : longint;
i : byte; i : byte;
reg8,reg32 : tregister; reg8,reg32 : tregister;
@ -1274,6 +1275,7 @@ implementation
end; end;
begin begin
oldsourceoffset:=source.offset;
if (not loadref) and if (not loadref) and
((size<=8) or ((size<=8) or
(not(cs_littlesize in aktglobalswitches ) and (size<=12))) then (not(cs_littlesize in aktglobalswitches ) and (size<=12))) then
@ -1403,8 +1405,11 @@ implementation
maybe_loadself; maybe_loadself;
end; end;
if delsource then if delsource then
begin
source.offset:=oldsourceoffset;
ungetiftemp(source); ungetiftemp(source);
end; end;
end;
procedure emitloadord2reg(const location:Tlocation;orddef:torddef; procedure emitloadord2reg(const location:Tlocation;orddef:torddef;
@ -2969,7 +2974,12 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.6 2001-10-14 11:49:51 jonas Revision 1.7 2001-10-20 17:22:57 peter
* concatcopy could release a wrong reference because the offset was
increased without restoring the original before the release of
a temp
Revision 1.6 2001/10/14 11:49:51 jonas
* finetuned register allocation info for assignments * finetuned register allocation info for assignments
Revision 1.5 2001/09/30 21:28:34 peter Revision 1.5 2001/09/30 21:28:34 peter