From 05cfd77d1e900f9bbfe3094138ebb28dee1341d7 Mon Sep 17 00:00:00 2001 From: Eusebiu Marcu Date: Sun, 6 Mar 2011 23:17:46 +0200 Subject: [PATCH] Make sure that we don't crash if the ILVariable original value is null or the index is out of range. --- Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs | 3 ++- Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs b/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs index 778427006..0a72f01f6 100644 --- a/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs +++ b/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs @@ -471,7 +471,8 @@ namespace Debugger.MetaData corVal = context.CorILFrame.GetLocalVariable((uint)varIndex); } catch (COMException e) { if ((uint)e.ErrorCode == 0x80131304) throw new GetValueException("Unavailable in optimized code"); - throw; + // show the message in case of bad index + throw new GetValueException(e.Message); } return new Value(context.AppDomain, corVal); } diff --git a/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs b/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs index a220e6e07..1889fedf0 100644 --- a/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs +++ b/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs @@ -163,12 +163,12 @@ namespace ILSpy.Debugger.Models.TreeModel IEnumerable list; if (ILAstBuilder.MemberLocalVariables.TryGetValue(token, out list)) { var variable = list.FirstOrDefault(v => v.Name == targetName); - if (variable != null) { + if (variable != null && variable.OriginalVariable != null) { if (expression is MemberReferenceExpression) { var memberExpression = (MemberReferenceExpression)expression; - memberExpression.Target.AddAnnotation(new int[] { variable.OriginalVariable.Index }); + memberExpression.Target.AddAnnotation(new [] { variable.OriginalVariable.Index }); } else { - expression.AddAnnotation(new int[] { variable.OriginalVariable.Index }); + expression.AddAnnotation(new [] { variable.OriginalVariable.Index }); } } }