Browse Source

* Fix TW22160B1

Michaël Van Canneyt 1 year ago
parent
commit
76687a04e5
2 changed files with 6 additions and 4 deletions
  1. 1 1
      compiler/ctask.pas
  2. 5 3
      compiler/fmodule.pas

+ 1 - 1
compiler/ctask.pas

@@ -215,7 +215,7 @@ begin
     ms_registered : cancontinue:=true;
     ms_registered : cancontinue:=true;
     ms_compile : cancontinue:=true;
     ms_compile : cancontinue:=true;
     ms_compiling_waitimpl : cancontinue:=m.usedunitsloaded(false,firstwaiting);
     ms_compiling_waitimpl : cancontinue:=m.usedunitsloaded(false,firstwaiting);
-    ms_compiling_waitfinish : cancontinue:=m.nowaitingforunits;
+    ms_compiling_waitfinish : cancontinue:=m.nowaitingforunits(firstwaiting);
     ms_compiling_waitintf : cancontinue:=m.usedunitsloaded(true,firstwaiting);
     ms_compiling_waitintf : cancontinue:=m.usedunitsloaded(true,firstwaiting);
     ms_compiling_wait : cancontinue:=m.usedunitsloaded(true,firstwaiting);
     ms_compiling_wait : cancontinue:=m.usedunitsloaded(true,firstwaiting);
     ms_compiled : cancontinue:=true;
     ms_compiled : cancontinue:=true;

+ 5 - 3
compiler/fmodule.pas

@@ -260,7 +260,7 @@ interface
         function  addusedunit(hp:tmodule;inuses:boolean;usym:tunitsym):tused_unit;
         function  addusedunit(hp:tmodule;inuses:boolean;usym:tunitsym):tused_unit;
         function  usesmodule_in_interface(m : tmodule) : boolean;
         function  usesmodule_in_interface(m : tmodule) : boolean;
         function usedunitsloaded(interface_units: boolean; out firstwaiting : tmodule): boolean;
         function usedunitsloaded(interface_units: boolean; out firstwaiting : tmodule): boolean;
-        function nowaitingforunits : Boolean;
+        function nowaitingforunits(out firstwaiting : tmodule) : Boolean;
         procedure updatemaps;
         procedure updatemaps;
         function  derefidx_unit(id:longint):longint;
         function  derefidx_unit(id:longint):longint;
         function  resolve_unit(id:longint):tmodule;
         function  resolve_unit(id:longint):tmodule;
@@ -1045,7 +1045,7 @@ implementation
 
 
       const
       const
         statesneeded : array[boolean] of tmodulestates = ([ms_processed, ms_compiled,ms_compiling_waitimpl, ms_compiling_waitfinish],
         statesneeded : array[boolean] of tmodulestates = ([ms_processed, ms_compiled,ms_compiling_waitimpl, ms_compiling_waitfinish],
-                                                          [ms_processed, ms_compiled,ms_compiling_waitimpl]);
+                                                          [ms_processed, ms_compiled,ms_compiling_waitimpl, ms_compiling_waitfinish]);
 
 
       var
       var
         itm : TLinkedListItem;
         itm : TLinkedListItem;
@@ -1069,10 +1069,12 @@ implementation
           end;
           end;
       end;
       end;
 
 
-    function tmodule.nowaitingforunits: Boolean;
+    function tmodule.nowaitingforunits(out firstwaiting : tmodule): Boolean;
 
 
       begin
       begin
         Result:=waitingforunit.count=0;
         Result:=waitingforunit.count=0;
+        If not Result then
+          firstwaiting:=tmodule(waitingforunit[0]);
       end;
       end;
 
 
     function tmodule.usesmodule_in_interface(m: tmodule): boolean;
     function tmodule.usesmodule_in_interface(m: tmodule): boolean;