aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/Core/ValueObject.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/source/Core/ValueObject.cpp b/source/Core/ValueObject.cpp
index 9fc3a0f7f..87f72551f 100644
--- a/source/Core/ValueObject.cpp
+++ b/source/Core/ValueObject.cpp
@@ -2020,7 +2020,9 @@ ValueObject::GetSyntheticExpressionPathChild(const char* expression, bool can_cr
{
// We haven't made a synthetic array member for expression yet, so
// lets make one and cache it for any future reference.
- synthetic_child_sp = GetValueForExpressionPath(expression);
+ synthetic_child_sp = GetValueForExpressionPath(expression,
+ NULL, NULL, NULL,
+ GetValueForExpressionPathOptions().DontAllowSyntheticChildren());
// Cache the value if we got one back...
if (synthetic_child_sp.get())
@@ -2486,10 +2488,14 @@ ValueObject::GetValueForExpressionPath_Impl(const char* expression_cstr,
else if (options.m_no_synthetic_children == false) // let's try with synthetic children
{
if (root->IsSynthetic())
- child_valobj_sp = root;
- else
- child_valobj_sp = root->GetSyntheticValue();
-
+ {
+ *first_unparsed = expression_cstr;
+ *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild;
+ *final_result = ValueObject::eExpressionPathEndResultTypeInvalid;
+ return ValueObjectSP();
+ }
+
+ child_valobj_sp = root->GetSyntheticValue();
if (child_valobj_sp.get())
child_valobj_sp = child_valobj_sp->GetChildMemberWithName(child_name, true);
}
@@ -2524,6 +2530,14 @@ ValueObject::GetValueForExpressionPath_Impl(const char* expression_cstr,
}
else if (options.m_no_synthetic_children == false) // let's try with synthetic children
{
+ if (root->IsSynthetic())
+ {
+ *first_unparsed = expression_cstr;
+ *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild;
+ *final_result = ValueObject::eExpressionPathEndResultTypeInvalid;
+ return ValueObjectSP();
+ }
+
child_valobj_sp = root->GetSyntheticValue(true);
if (child_valobj_sp)
child_valobj_sp = child_valobj_sp->GetChildMemberWithName(child_name, true);