diff --git a/compiler/ctask.pas b/compiler/ctask.pas index 75f9d74623..2d2ceb4d67 100644 --- a/compiler/ctask.pas +++ b/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; diff --git a/compiler/fmodule.pas b/compiler/fmodule.pas index df664bc939..05da34e596 100644 --- a/compiler/fmodule.pas +++ b/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;