Преглед изворни кода

* 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
          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

+ 9 - 3
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