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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user