Browse Source

Bugfix - keep return if it is labelled.

pull/1/head^2
David Srbecký 18 years ago
parent
commit
a43af72f9e
  1. 5
      src/AstMetodBodyBuilder.cs

5
src/AstMetodBodyBuilder.cs

@ -61,13 +61,14 @@ namespace Decompiler
} catch (NotImplementedException) { } catch (NotImplementedException) {
astStatement = MakeComment(expr.ExpressionByteCode.Description); astStatement = MakeComment(expr.ExpressionByteCode.Description);
} }
if (expr.FirstByteCode.BranchesHere.Count > 0) { if (expr.IsBranchTarget) {
astBlock.Children.Add(new Ast.LabelStatement(string.Format("IL_{0:X2}", expr.FirstByteCode.Offset))); astBlock.Children.Add(new Ast.LabelStatement(string.Format("IL_{0:X2}", expr.FirstByteCode.Offset)));
} }
// Skip last return statement // Skip last return statement
if (i == exprCol.Count - 1 && if (i == exprCol.Count - 1 &&
expr.ExpressionByteCode.OpCode.Code == Code.Ret && expr.ExpressionByteCode.OpCode.Code == Code.Ret &&
expr.ExpressionByteCode.PopCount == 0) { expr.ExpressionByteCode.PopCount == 0 &&
!expr.IsBranchTarget) {
continue; continue;
} }
astBlock.Children.Add(astStatement); astBlock.Children.Add(astStatement);

Loading…
Cancel
Save