diff --git a/compiler/fmodule.pas b/compiler/fmodule.pas index f0e7b56218..3bfb5fcc48 100644 --- a/compiler/fmodule.pas +++ b/compiler/fmodule.pas @@ -431,7 +431,13 @@ uses if assigned(externals) then externals.free; if assigned(scanner) then - tscannerfile(scanner).free; + begin + { also update current_scanner if it was pointing + to this module } + if current_scanner=tscannerfile(scanner) then + current_scanner:=nil; + tscannerfile(scanner).free; + end; used_units.free; dependent_units.free; resourcefiles.Free; @@ -597,7 +603,10 @@ uses end. { $Log$ - Revision 1.26 2002-08-12 16:46:04 peter + Revision 1.27 2002-08-16 15:31:08 peter + * fixed possible crashes with current_scanner + + Revision 1.26 2002/08/12 16:46:04 peter * tscannerfile is now destroyed in tmodule.reset and current_scanner is updated accordingly. This removes all the loading and saving of the old scanner and the invalid flag marking diff --git a/compiler/parser.pas b/compiler/parser.pas index 42d3f84b43..fae6eab959 100644 --- a/compiler/parser.pas +++ b/compiler/parser.pas @@ -467,8 +467,11 @@ implementation tppumodule(current_module).ppufile:=nil; end; { free scanner } - current_scanner.free; - current_scanner:=nil; + if assigned(current_scanner) then + begin + current_scanner.free; + current_scanner:=nil; + end; current_module.scanner:=nil; if (compile_level>1) then @@ -592,7 +595,10 @@ implementation end. { $Log$ - Revision 1.41 2002-08-15 19:10:35 peter + Revision 1.42 2002-08-16 15:31:08 peter + * fixed possible crashes with current_scanner + + Revision 1.41 2002/08/15 19:10:35 peter * first things tai,tnode storing in ppu Revision 1.40 2002/08/12 16:46:04 peter