Browse Source

* fixed possible crashes with current_scanner

peter 23 năm trước cách đây
mục cha
commit
87088e16fe
2 tập tin đã thay đổi với 20 bổ sung5 xóa
  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