Browse Source

Make sure that we don't crash if the ILVariable original value is null or the index is out of range.

pull/191/merge
Eusebiu Marcu 16 years ago
parent
commit
05cfd77d1e
  1. 3
      Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs
  2. 6
      Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs

3
Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs

@ -471,7 +471,8 @@ namespace Debugger.MetaData
corVal = context.CorILFrame.GetLocalVariable((uint)varIndex); corVal = context.CorILFrame.GetLocalVariable((uint)varIndex);
} catch (COMException e) { } catch (COMException e) {
if ((uint)e.ErrorCode == 0x80131304) throw new GetValueException("Unavailable in optimized code"); 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); return new Value(context.AppDomain, corVal);
} }

6
Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs

@ -163,12 +163,12 @@ namespace ILSpy.Debugger.Models.TreeModel
IEnumerable<ILVariable> list; IEnumerable<ILVariable> list;
if (ILAstBuilder.MemberLocalVariables.TryGetValue(token, out list)) { if (ILAstBuilder.MemberLocalVariables.TryGetValue(token, out list)) {
var variable = list.FirstOrDefault(v => v.Name == targetName); var variable = list.FirstOrDefault(v => v.Name == targetName);
if (variable != null) { if (variable != null && variable.OriginalVariable != null) {
if (expression is MemberReferenceExpression) { if (expression is MemberReferenceExpression) {
var memberExpression = (MemberReferenceExpression)expression; var memberExpression = (MemberReferenceExpression)expression;
memberExpression.Target.AddAnnotation(new int[] { variable.OriginalVariable.Index }); memberExpression.Target.AddAnnotation(new [] { variable.OriginalVariable.Index });
} else { } else {
expression.AddAnnotation(new int[] { variable.OriginalVariable.Index }); expression.AddAnnotation(new [] { variable.OriginalVariable.Index });
} }
} }
} }

Loading…
Cancel
Save