Debugger: Fix #12499.

DebugReportGenerator/UiUtils:
- When traversing the value node graph, detection of the case of
  an address type with a compound child wasn't taking type modifiers
  into account, leading to it sometimes not traversing down to members
  when it should, and consequently not reporting those members in a debug
  report.
This commit is contained in:
Rene Gollent
2015-11-23 22:31:01 -05:00
parent 9b9e7ec808
commit a9aa59ef7c
2 changed files with 6 additions and 4 deletions
@@ -750,8 +750,9 @@ DebugReportGenerator::_ResolveValueIfNeeded(ValueNode* node, StackFrame* frame,
// since in the case of a pointer to a compound we hide
// the intervening compound, don't consider the hidden node
// a level for the purposes of depth traversal
if (node->GetType()->Kind() == TYPE_ADDRESS
&& child->GetType()->Kind() == TYPE_COMPOUND) {
if (node->GetType()->ResolveRawType(false)->Kind() == TYPE_ADDRESS
&& child->GetType()->ResolveRawType(false)->Kind()
== TYPE_COMPOUND) {
_ResolveValueIfNeeded(child->Node(), frame, maxDepth);
} else
_ResolveValueIfNeeded(child->Node(), frame, maxDepth - 1);
@@ -297,8 +297,9 @@ UiUtils::PrintValueNodeGraph(BString& _output, ValueNodeChild* child,
}
if (node->CountChildren() == 1
&& node->GetType()->Kind() == TYPE_ADDRESS
&& node->ChildAt(0)->GetType()->Kind() == TYPE_COMPOUND) {
&& node->GetType()->ResolveRawType(false)->Kind() == TYPE_ADDRESS
&& node->ChildAt(0)->GetType()->ResolveRawType(false)->Kind()
== TYPE_COMPOUND) {
// for the case of a pointer to a compound type,
// we want to hide the intervening compound node and print
// the children directly.