Browse Source

* double initialization code calling bug fixed

pierre 27 years ago
parent
commit
00f7988d1d
1 changed files with 10 additions and 2 deletions
  1. 10 2
      compiler/pmodules.pas

+ 10 - 2
compiler/pmodules.pas

@@ -300,6 +300,7 @@ unit pmodules;
         ImplIntf : array[boolean] of string[15]=('interface','implementation');
       var
         st : punitsymtable;
+        second_time : boolean;
         old_current_ppu : pppufile;
         old_current_module,hp,hp2 : pmodule;
         name : string;{ necessary because
@@ -416,12 +417,14 @@ unit pmodules;
                current_module:=hp;
                current_module^.in_second_compile:=true;
                Message1(unit_u_second_load_unit,current_module^.modulename^);
+               second_time:=true;
              end
             else
           { generates a new unit info record }
              begin
                 current_module:=new(pmodule,init(s,true));
                 scanner:=nil;
+                second_time:=false;
              end;
             current_ppu:=current_module^.ppufile;
           { now we can register the unit }
@@ -432,7 +435,9 @@ unit pmodules;
           { set compiled flag }
             current_module^.compiled:=true;
           { register the unit _once_ }
-            usedunits.concat(new(pused_unit,init(current_module,true)));
+          { this is buggy PM }
+            if not second_time then
+              usedunits.concat(new(pused_unit,init(current_module,true)));
           { load return pointer }
             hp:=current_module;
           end;
@@ -1110,7 +1115,10 @@ unit pmodules;
 end.
 {
   $Log$
-  Revision 1.79  1998-11-03 11:33:11  peter
+  Revision 1.80  1998-11-06 09:48:14  pierre
+   * double initialization code calling bug fixed
+
+  Revision 1.79  1998/11/03 11:33:11  peter
     + search_unit arg to only search for sources
 
   Revision 1.78  1998/10/30 12:23:41  peter