From 32cec2a1fba2eee0d853d176b0444b0ac16c16ca Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sun, 6 Jan 2019 10:38:25 +0100 Subject: [PATCH] Fix traversal bug in DecompileQueries: expressions with independent sub-expressions like conditional-expressions, binary operators or parameter lists were not handled correctly. --- .../CSharp/Transforms/IntroduceQueryExpressions.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceQueryExpressions.cs b/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceQueryExpressions.cs index 38e1c35a1..57d25c8cd 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceQueryExpressions.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceQueryExpressions.cs @@ -74,7 +74,10 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms QueryExpression query = DecompileQuery(node as InvocationExpression); if (query != null) node.ReplaceWith(query); - for (AstNode child = (query ?? node).FirstChild; child != null; child = child.NextSibling) { + AstNode next; + for (AstNode child = (query ?? node).FirstChild; child != null; child = next) { + // store referece to next child before transformation + next = child.NextSibling; DecompileQueries(child); } }