diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-05-29 00:10:36 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-06-10 20:47:56 -0700 |
| commit | 32692569656d9a178abb24f8fb7893395700cb62 (patch) | |
| tree | c2f10d2ed2d1d5e0e6c1cd2d532c6d76d401a466 /tools | |
| parent | 3064d2aa7b9a8ea836cb70884b0640fe902ecc29 (diff) | |
| download | zig-32692569656d9a178abb24f8fb7893395700cb62.tar.gz zig-32692569656d9a178abb24f8fb7893395700cb62.zip | |
behavior: fix more compiler crashes
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/lldb_pretty_printers.py | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/tools/lldb_pretty_printers.py b/tools/lldb_pretty_printers.py index 0bba97dcaa..3d57adee70 100644 --- a/tools/lldb_pretty_printers.py +++ b/tools/lldb_pretty_printers.py @@ -455,21 +455,21 @@ class InternPool_Index_SynthProvider: elif encoding_field.name == 'trailing': trailing_data = lldb.SBData() for trailing_field in encoding_field.type.fields: - if trailing_field.type.IsAggregateType(): - trailing_data.Append(extra.GetChildAtIndex(extra_index).address_of.data) - len = dynamic_values['trailing.%s.len' % trailing_field.name].unsigned - trailing_data.Append(lldb.SBData.CreateDataFromInt(len, trailing_data.GetAddressByteSize())) - extra_index += len - else: - pass + trailing_data.Append(extra.GetChildAtIndex(extra_index).address_of.data) + trailing_len = dynamic_values['trailing.%s.len' % trailing_field.name].unsigned + trailing_data.Append(lldb.SBData.CreateDataFromInt(trailing_len, trailing_data.GetAddressByteSize())) + extra_index += trailing_len self.trailing = self.data.CreateValueFromData('trailing', trailing_data, encoding_field.type) else: - path = encoding_field.type.GetPointeeType().name.removeprefix('%s::' % encoding_type.name).removeprefix('%s.' % encoding_type.name).partition('__')[0].split('.') - if path[0] == 'data': - dynamic_value = self.data - for name in path[1:]: - dynamic_value = dynamic_value.GetChildMemberWithName(name) - dynamic_values[encoding_field.name] = dynamic_value + for path in encoding_field.type.GetPointeeType().name.removeprefix('%s::' % encoding_type.name).removeprefix('%s.' % encoding_type.name).partition('__')[0].split(' orelse '): + if path.startswith('data.'): + root = self.data + path = path[len('data'):] + else: return + dynamic_value = root.GetValueForExpressionPath(path) + if dynamic_value: + dynamic_values[encoding_field.name] = dynamic_value + break except: pass def has_children(self): return True def num_children(self): return 2 + (self.trailing is not None) |
