瀏覽代碼

* Fix TW22160B1

Michaël Van Canneyt 1 年之前
父節點
當前提交
76687a04e5
共有 2 個文件被更改,包括 6 次插入4 次删除
  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_compile : cancontinue:=true;
     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_wait : cancontinue:=m.usedunitsloaded(true,firstwaiting);
     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  usesmodule_in_interface(m : tmodule) : boolean;
         function usedunitsloaded(interface_units: boolean; out firstwaiting : tmodule): boolean;
-        function nowaitingforunits : Boolean;
+        function nowaitingforunits(out firstwaiting : tmodule) : Boolean;
         procedure updatemaps;
         function  derefidx_unit(id:longint):longint;
         function  resolve_unit(id:longint):tmodule;
@@ -1045,7 +1045,7 @@ implementation
 
       const
         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
         itm : TLinkedListItem;
@@ -1069,10 +1069,12 @@ implementation
           end;
       end;
 
-    function tmodule.nowaitingforunits: Boolean;
+    function tmodule.nowaitingforunits(out firstwaiting : tmodule): Boolean;
 
       begin
         Result:=waitingforunit.count=0;
+        If not Result then
+          firstwaiting:=tmodule(waitingforunit[0]);
       end;
 
     function tmodule.usesmodule_in_interface(m: tmodule): boolean;