[Lldb-commits] [PATCH] D79404: Fix error handling after [<index>] in 'frame variable'
Pavel Labath via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed May 6 02:07:33 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rGcf5ed6dc59ec: Fix error handling after [<index>] in 'frame variable' (authored by jarin, committed by labath).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D79404/new/
https://reviews.llvm.org/D79404
Files:
lldb/source/Target/StackFrame.cpp
lldb/test/API/functionalities/var_path/TestVarPath.py
Index: lldb/test/API/functionalities/var_path/TestVarPath.py
===================================================================
--- lldb/test/API/functionalities/var_path/TestVarPath.py
+++ lldb/test/API/functionalities/var_path/TestVarPath.py
@@ -25,7 +25,7 @@
def verify_point(self, frame, var_name, var_typename, x_value, y_value):
v = frame.GetValueForVariablePath(var_name)
self.assertTrue(v.GetError().Success(), "Make sure we find '%s'" % (var_name))
- self.assertEquals(v.GetType().GetName(), var_typename,
+ self.assertEquals(v.GetType().GetName(), var_typename,
"Make sure '%s' has type '%s'" % (var_name, var_typename))
if '*' in var_typename:
@@ -76,11 +76,14 @@
self.verify_point(frame, 'pt_ptr[1]', 'Point', 5050, 6060)
# Test arrays
v = frame.GetValueForVariablePath('points')
- self.assertTrue(v.GetError().Success(),
+ self.assertTrue(v.GetError().Success(),
"Make sure we find 'points'")
self.verify_point(frame, 'points[0]', 'Point', 1010, 2020)
self.verify_point(frame, 'points[1]', 'Point', 3030, 4040)
self.verify_point(frame, 'points[2]', 'Point', 5050, 6060)
+ v = frame.GetValueForVariablePath('points[0]+5')
+ self.assertTrue(v.GetError().Fail(),
+ "Make sure we do not ignore characters between ']' and the end")
# Test a reference
self.verify_point(frame, 'pt_ref', 'Point &', 1, 2)
v = frame.GetValueForVariablePath('pt_sp')
@@ -88,7 +91,7 @@
# Make sure we don't crash when looking for non existant child
# in type with synthetic children. This used to cause a crash.
v = frame.GetValueForVariablePath('pt_sp->not_valid_child')
- self.assertTrue(v.GetError().Fail(),
+ self.assertTrue(v.GetError().Fail(),
"Make sure we don't find 'pt_sp->not_valid_child'")
Index: lldb/source/Target/StackFrame.cpp
===================================================================
--- lldb/source/Target/StackFrame.cpp
+++ lldb/source/Target/StackFrame.cpp
@@ -606,7 +606,7 @@
}
// We are dumping at least one child
- while (separator_idx != std::string::npos) {
+ while (!var_expr.empty()) {
// Calculate the next separator index ahead of time
ValueObjectSP child_valobj_sp;
const char separator_type = var_expr[0];
@@ -940,7 +940,6 @@
return ValueObjectSP();
}
- separator_idx = var_expr.find_first_of(".-[");
if (use_dynamic != eNoDynamicValues) {
ValueObjectSP dynamic_value_sp(
child_valobj_sp->GetDynamicValue(use_dynamic));
@@ -1025,7 +1024,6 @@
return ValueObjectSP();
}
- separator_idx = var_expr.find_first_of(".-[");
if (use_dynamic != eNoDynamicValues) {
ValueObjectSP dynamic_value_sp(
child_valobj_sp->GetDynamicValue(use_dynamic));
@@ -1051,9 +1049,6 @@
if (child_valobj_sp)
valobj_sp = child_valobj_sp;
-
- if (var_expr.empty())
- break;
}
if (valobj_sp) {
if (deref) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79404.262320.patch
Type: text/x-patch
Size: 3180 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200506/b4188e39/attachment.bin>
More information about the lldb-commits
mailing list