From 2c615ca95acf3b0cb15ffd9ed073613d21085db2 Mon Sep 17 00:00:00 2001 From: mattias Date: Thu, 19 Sep 2013 19:43:30 +0000 Subject: [PATCH] IDE: unit dependencies: fixed clearing marks git-svn-id: trunk@42888 - --- ide/unitdependencies.pas | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/ide/unitdependencies.pas b/ide/unitdependencies.pas index 4863430fb2..07310061c8 100644 --- a/ide/unitdependencies.pas +++ b/ide/unitdependencies.pas @@ -1210,6 +1210,17 @@ var Result:=TUDUses(UDItem).GetSCCNode; end; + procedure ClearNode(Node: TUDSCCNode); + begin + Node.TarjanIndex:=-1; + Node.TarjanLowLink:=-1; + Node.TarjanVisiting:=false; + if WithImplementationUses then + Node.InImplCycle:=false + else + Node.InIntfCycle:=false; + end; + procedure SearchNode(Node: TUDSCCNode); forward; procedure SearchEdge(FromNode, ToNode: TUDSCCNode); @@ -1277,19 +1288,17 @@ var AVLNode: TAVLTreeNode; UDUnit: TUDUnit; Node: TUDSCCNode; + i: Integer; begin // init TarjanIndex:=0; for AVLNode in FUsesGraph.FilesTree do begin UDUnit:=TUDUnit(AVLNode.Data); Node:=GetNode(UDUnit); - Node.TarjanIndex:=-1; - Node.TarjanLowLink:=-1; - Node.TarjanVisiting:=false; - if WithImplementationUses then - Node.InImplCycle:=false - else - Node.InIntfCycle:=false; + ClearNode(Node); + if UDUnit.UsesUnits<>nil then + for i:=0 to UDUnit.UsesUnits.Count-1 do + ClearNode(GetNode(TObject(UDUnit.UsesUnits[i]))); end; Stack:=TFPList.Create; try