diff options
Diffstat (limited to 'examples/synthetic/gnu_libstdcpp.py')
-rw-r--r-- | examples/synthetic/gnu_libstdcpp.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/examples/synthetic/gnu_libstdcpp.py b/examples/synthetic/gnu_libstdcpp.py index b6bf42235acd..9f26282be01f 100644 --- a/examples/synthetic/gnu_libstdcpp.py +++ b/examples/synthetic/gnu_libstdcpp.py @@ -237,11 +237,12 @@ class StdVectorSynthProvider: def get_child_at_index(self, index): if index >= self.num_children(): return None - byte_offset = index / 8 - bit_offset = index % 8 - element_size = self.start_p.GetType().GetPointeeType().GetByteSize() - data = self.start_p.GetPointeeData(byte_offset / element_size) - bit = data.GetUnsignedInt8(lldb.SBError(), byte_offset % element_size) & (1 << bit_offset) + element_type = self.start_p.GetType().GetPointeeType() + element_bits = 8 * element_type.GetByteSize() + element_offset = (index / element_bits) * element_type.GetByteSize() + bit_offset = index % element_bits + element = self.start_p.CreateChildAtOffset('['+str(index)+']',element_offset,element_type) + bit = element.GetValueAsUnsigned(0) & (1 << bit_offset) if bit != 0: value_expr = "(bool)true" else: |