* fixed double_checksum

This commit is contained in:
peter 1999-04-25 17:32:14 +00:00
parent 87143b5b53
commit f761b7edbf

View File

@ -307,15 +307,6 @@ unit pmodules;
begin
Message2(unit_u_recompile_crc_change,current_module^.modulename^,pu^.name^);
current_module^.do_compile:=true;
{$ifdef STRANGERECOMPILE}
{ if the checksum was known but has changed then
we should also recompile the loaded unit ! }
if (pu^.checksum<>0) and (loaded_unit^.sources_avail) then
begin
Message2(unit_u_recompile_crc_change,loaded_unit^.modulename^,current_module^.modulename^);
loaded_unit^.do_compile:=true;
end;
{$endif}
dispose(current_module^.map);
current_module^.map:=nil;
exit;
@ -359,27 +350,14 @@ unit pmodules;
pu^.loaded:=true;
{$ifdef Double_checksum}
{ need to recompile the current unit ? }
if (loaded_unit^.interface_crc<>pu^.interface_checksum) then
{ checksum change whereas it was already known
loade_unit was changed so we need to recompile this unit }
if loaded_unit^.crc<>pu^.checksum then
{ if (loaded_unit^.interface_crc<>pu^.interface_checksum) then }
begin
{$ifdef STRANGERECOMPILE}
{if (loaded_unit^.sources_avail) then
begin
loaded_unit^.do_compile:=true;
end; }
Message2(unit_u_recompile_crc_change,loaded_unit^.modulename^,current_module^.modulename^);
loaded_unit^.do_compile:=true;
if(pu^.interface_checksum<>0) then
load_refs:=false;
{$else}
writeln('loaded intfc: ',loaded_unit^.interface_crc,' pu intfc ',pu^.interface_checksum);
Message2(unit_u_recompile_crc_change,current_module^.modulename^,pu^.name^);
current_module^.do_compile:=true;
dispose(current_module^.map);
current_module^.map:=nil;
exit;
{$endif}
end;
{$endif def Double_checksum}
{ setup the map entry for deref }
@ -467,6 +445,7 @@ writeln('loaded intfc: ',loaded_unit^.interface_crc,' pu intfc ',pu^.interface_c
end;
end;
begin
old_current_module:=current_module;
old_current_ppu:=current_ppu;
@ -480,6 +459,10 @@ writeln('loaded intfc: ',loaded_unit^.interface_crc,' pu intfc ',pu^.interface_c
begin
if hp^.modulename^=s then
begin
{$ifdef Double_checksum}
if hp^.do_reload_ppu then
break;
{$endif}
{ the unit is already registered }
{ and this means that the unit }
{ is already compiled }
@ -505,40 +488,12 @@ writeln('loaded intfc: ',loaded_unit^.interface_crc,' pu intfc ',pu^.interface_c
end;
end;
break;
end
{$ifdef Double_checksum}
else if hp^.do_reload_ppu then
begin
{ remove the old unit }
loaded_units.remove(hp);
scanner:=hp^.scanner;
name:=hp^.modulename^;
hp^.reset;
hp^.do_reload_ppu:=false;
hp^.scanner:=scanner;
{ try to reopen ppu }
hp^.search_unit(name,false);
{ try to load the unit a second time first }
current_module:=hp;
current_module^.in_second_compile:=true;
{ now realy load the ppu }
current_ppu:=current_module^.ppufile;
loadppufile;
{ set compiled flag }
current_module^.compiled:=true;
end;
{$else Double_Checksum}
;
{$endif Double_checksum}
{ the next unit }
hp:=pmodule(hp^.next);
end;
{ the unit is not in the symtable stack }
if (not assigned(st))
{$ifdef Double_checksum}
or (assigned(hp) and hp^.do_reload_ppu)
{$endif Double_checksum}
then
if (not assigned(st)) then
begin
if assigned(hp) then
begin
@ -547,7 +502,16 @@ writeln('loaded intfc: ',loaded_unit^.interface_crc,' pu intfc ',pu^.interface_c
scanner:=hp^.scanner;
hp^.reset;
{$ifdef Double_checksum}
hp^.do_reload_ppu:=false;
hp2:=pmodule(loaded_units.first);
while assigned(hp2) do
begin
if hp2^.do_reload_ppu then
begin
hp2^.do_reload_ppu:=false;
loadunit(hp^.modulename^,false);
end;
hp2:=pmodule(hp2^.next);
end;
{$endif Double_checksum}
hp^.scanner:=scanner;
{ try to reopen ppu }
@ -1398,7 +1362,10 @@ writeln('loaded intfc: ',loaded_unit^.interface_crc,' pu intfc ',pu^.interface_c
end.
{
$Log$
Revision 1.112 1999-04-25 15:08:38 peter
Revision 1.113 1999-04-25 17:32:14 peter
* fixed double_checksum
Revision 1.112 1999/04/25 15:08:38 peter
* small fixes for double_checksum
Revision 1.111 1999/04/21 09:43:46 peter