From 78eea4fddf720f40e51441d752176f0da00cb376 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Wed, 13 Apr 2011 20:37:47 +0200 Subject: [PATCH] Fixed bug that caused yield-return analysis to fail sometimes. --- ICSharpCode.Decompiler/ILAst/YieldReturnDecompiler.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.Decompiler/ILAst/YieldReturnDecompiler.cs b/ICSharpCode.Decompiler/ILAst/YieldReturnDecompiler.cs index 5872a9a52..3e5825c56 100644 --- a/ICSharpCode.Decompiler/ILAst/YieldReturnDecompiler.cs +++ b/ICSharpCode.Decompiler/ILAst/YieldReturnDecompiler.cs @@ -466,7 +466,10 @@ namespace ICSharpCode.Decompiler.ILAst if (!forDispose || tryFinally.CatchBlocks.Count != 0 || tryFinally.FaultBlock != null || tryFinally.FinallyBlock == null) throw new YieldAnalysisFailedException(); ranges[tryFinally.TryBlock].UnionWith(nodeRange); - AssignStateRanges(tryFinally.TryBlock.Body, tryFinally.TryBlock.Body.Count, forDispose); + if (tryFinally.TryBlock.Body.Count != 0) { + ranges[tryFinally.TryBlock.Body[0]].UnionWith(nodeRange); + AssignStateRanges(tryFinally.TryBlock.Body, tryFinally.TryBlock.Body.Count, forDispose); + } continue; }