瀏覽代碼

* fixed possible crashes with current_scanner

peter 23 年之前
父節點
當前提交
87088e16fe
共有 2 個文件被更改,包括 20 次插入5 次删除
  1. 11 2
      compiler/fmodule.pas
  2. 9 3
      compiler/parser.pas

+ 11 - 2
compiler/fmodule.pas

@@ -431,7 +431,13 @@ uses
         if assigned(externals) then
         if assigned(externals) then
          externals.free;
          externals.free;
         if assigned(scanner) then
         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;
         used_units.free;
         dependent_units.free;
         dependent_units.free;
         resourcefiles.Free;
         resourcefiles.Free;
@@ -597,7 +603,10 @@ uses
 end.
 end.
 {
 {
   $Log$
   $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
     * tscannerfile is now destroyed in tmodule.reset and current_scanner
       is updated accordingly. This removes all the loading and saving of
       is updated accordingly. This removes all the loading and saving of
       the old scanner and the invalid flag marking
       the old scanner and the invalid flag marking

+ 9 - 3
compiler/parser.pas

@@ -467,8 +467,11 @@ implementation
             tppumodule(current_module).ppufile:=nil;
             tppumodule(current_module).ppufile:=nil;
           end;
           end;
        { free scanner }
        { 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;
          current_module.scanner:=nil;
 
 
          if (compile_level>1) then
          if (compile_level>1) then
@@ -592,7 +595,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $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
     * first things tai,tnode storing in ppu
 
 
   Revision 1.40  2002/08/12 16:46:04  peter
   Revision 1.40  2002/08/12 16:46:04  peter