From 9c8df1d949748de6a2929fda2996a3d875897e06 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Wed, 29 Apr 2020 21:14:09 +0200 Subject: [PATCH] Fix assignment of ILRanges in ExpressionTransforms.TransformCatchVariable --- .../IL/Transforms/ExpressionTransforms.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ICSharpCode.Decompiler/IL/Transforms/ExpressionTransforms.cs b/ICSharpCode.Decompiler/IL/Transforms/ExpressionTransforms.cs index c299eda0b..a011b0051 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/ExpressionTransforms.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/ExpressionTransforms.cs @@ -713,7 +713,6 @@ namespace ICSharpCode.Decompiler.IL.Transforms /// void TransformCatchVariable(TryCatchHandler handler, Block entryPoint, bool isCatchBlock) { - List ilOffsets = null; if (!handler.Variable.IsSingleDefinition || handler.Variable.LoadCount != 1) return; // handle.Variable already has non-trivial uses if (!entryPoint.Instructions[0].MatchStLoc(out var exceptionVar, out var exceptionSlotLoad)) { @@ -723,7 +722,8 @@ namespace ICSharpCode.Decompiler.IL.Transforms if (inlinedUnboxAny.Type.Equals(handler.Variable.Type)) { context.Step("TransformCatchVariable - remove inlined UnboxAny", inlinedUnboxAny); inlinedUnboxAny.ReplaceWith(inlinedUnboxAny.Argument); - (ilOffsets ?? (ilOffsets = new List())).AddRange(inlinedUnboxAny.ILRanges); + foreach (var range in inlinedUnboxAny.ILRanges) + handler.AddExceptionSpecifierILRange(range); } } return; @@ -751,8 +751,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms exceptionVar.Type = handler.Variable.Type; handler.Variable = exceptionVar; if (isCatchBlock) { - (ilOffsets ?? (ilOffsets = new List())).AddRange(entryPoint.Instructions[0].Descendants.SelectMany(o => o.ILRanges)); - foreach (var offset in ilOffsets) + foreach (var offset in entryPoint.Instructions[0].Descendants.SelectMany(o => o.ILRanges)) handler.AddExceptionSpecifierILRange(offset); } entryPoint.Instructions.RemoveAt(0);