Browse Source

Fixed Forums-3382,3489,3575: Attempt to display property of property crashed the debugger

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1063 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 20 years ago
parent
commit
d139534b91
  1. 9
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs
  2. 11
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/ObjectValue.cs

9
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs

@ -121,6 +121,15 @@ namespace Debugger @@ -121,6 +121,15 @@ namespace Debugger
ICorDebugValue[] args = getArgs();
if (args == null) {
error = "Can not evaluate property of property";
evalState = EvalState.Error;
if (EvalComplete != null) {
EvalComplete(this, new EvalEventArgs(this));
}
return false;
}
// TODO: What if this thread is not suitable?
corEval = targetThread.CorThread.CreateEval();

11
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/ObjectValue.cs

@ -185,10 +185,15 @@ namespace Debugger @@ -185,10 +185,15 @@ namespace Debugger
ICorDebugFunction evalCorFunction = Module.CorModule.GetFunctionFromToken(method.Token);
return new Eval(debugger, evalCorFunction, delegate {
if (method.IsStatic) {
return new ICorDebugValue[] {};
Value updatedVal = getter();
if (this.IsEquivalentValue(updatedVal) && ((ObjectValue)updatedVal).SoftReference != null) {
if (method.IsStatic) {
return new ICorDebugValue[] {};
} else {
return new ICorDebugValue[] {((ObjectValue)updatedVal).SoftReference.CastTo<ICorDebugValue>()};
}
} else {
return new ICorDebugValue[] {((ObjectValue)getter()).SoftReference.CastTo<ICorDebugValue>()};
return null;
}
});
}

Loading…
Cancel
Save