提交 c583602d 编写于 作者: A Andrew Casey

Construct EnumContextDataItems on demand. Also, don't access their properties...

Construct EnumContextDataItems on demand.  Also, don't access their properties before checking for null.
上级 a9a1b202
......@@ -36,7 +36,6 @@ internal sealed class EvalResultDataItem : DkmDataItem
public readonly DkmEvaluationResultCategory Category;
public readonly DkmEvaluationResultFlags Flags;
public readonly string EditableValue;
public readonly EnumContextDataItem EnumContextDataItem;
public string FullName
{
......@@ -83,7 +82,6 @@ public string FullName
this.EditableValue = editableValue;
this.Flags = flags | GetFlags(value) | ((expansion == null) ? DkmEvaluationResultFlags.None : DkmEvaluationResultFlags.Expandable);
this.Expansion = expansion;
this.EnumContextDataItem = new EnumContextDataItem(this);
}
private static DkmEvaluationResultFlags GetFlags(DkmClrValue value)
......
......@@ -89,7 +89,7 @@ void IDkmClrResultProvider.GetItems(DkmEvaluationResultEnumContext enumContext,
{
try
{
var dataItem = enumContext.GetDataItem<EnumContextDataItem>().EvalResultDataItem;
var dataItem = enumContext.GetDataItem<EnumContextDataItem>();
if (dataItem == null)
{
// We don't know about this result. Call next implementation
......@@ -97,7 +97,7 @@ void IDkmClrResultProvider.GetItems(DkmEvaluationResultEnumContext enumContext,
return;
}
completionRoutine(GetItems(enumContext.InspectionContext, dataItem, startIndex, count));
completionRoutine(GetItems(enumContext.InspectionContext, dataItem.EvalResultDataItem, startIndex, count));
}
catch (Exception e) when (ExpressionEvaluatorFatalError.CrashIfFailFastEnabled(e))
{
......@@ -420,7 +420,7 @@ private DkmGetChildrenAsyncResult GetChildren(DkmInspectionContext inspectionCon
var rows = builder.ToArrayAndFree();
Debug.Assert(index >= rows.Length);
Debug.Assert(initialRequestSize >= rows.Length);
var enumContext = DkmEvaluationResultEnumContext.Create(index, evaluationResult.StackFrame, evaluationResult.InspectionContext, dataItem.EnumContextDataItem);
var enumContext = DkmEvaluationResultEnumContext.Create(index, evaluationResult.StackFrame, evaluationResult.InspectionContext, new EnumContextDataItem(dataItem));
return new DkmGetChildrenAsyncResult(rows, enumContext);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册