From 07ee3cddfc192daa67238811d140f7e5aa226fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Thu, 3 Dec 2015 10:05:24 +0100 Subject: Fixed 'Bug 36333 - Xamarin hangs after a few seconds of usage'. --- .../CodeIssues/Custom/RedundantAssignmentIssue.cs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs') diff --git a/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs b/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs index b1d215c5..77a6c943 100644 --- a/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs +++ b/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs @@ -433,8 +433,10 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring if (IsInsideTryOrCatchBlock(node.References [0])) continue; ProcessNode(node, true, nodeStates); + visitedNodes.Clear (); } } + HashSet visitedNodes = new HashSet (); void ProcessNode(VariableReferenceNode node, bool addIssue, IDictionary nodeStates) @@ -444,6 +446,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring bool? reachable = false; foreach (var nextNode in node.NextNodes) { + if (!visitedNodes.Add (nextNode)) + continue; if (nodeStates [nextNode] == NodeState.None) ProcessNode(nextNode, false, nodeStates); -- cgit v1.2.3