diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/dwarf/dwarf_import/src/die_handlers.rs | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/plugins/dwarf/dwarf_import/src/die_handlers.rs b/plugins/dwarf/dwarf_import/src/die_handlers.rs index 4d013092..81e13308 100644 --- a/plugins/dwarf/dwarf_import/src/die_handlers.rs +++ b/plugins/dwarf/dwarf_import/src/die_handlers.rs @@ -316,11 +316,9 @@ pub(crate) fn handle_function<R: ReaderType>( }; // Alias function type in the case that it contains itself - if let Some(name) = debug_info_builder_context.get_name(dwarf, unit, entry) { - let ntr = - Type::named_type_from_type(&name, &Type::function(return_type.as_ref(), vec![], false)); - debug_info_builder.add_type(get_uid(dwarf, unit, entry), name, ntr, false); - } + let name = debug_info_builder_context.get_name(dwarf, unit, entry).unwrap_or("_unnamed_func".to_string()); + let ntr = Type::named_type_from_type(&name, &Type::function(return_type.as_ref(), vec![], false)); + debug_info_builder.add_type(get_uid(dwarf, unit, entry), name, ntr, false); let mut parameters: Vec<FunctionParameter> = vec![]; let mut variable_arguments = false; @@ -350,12 +348,8 @@ pub(crate) fn handle_function<R: ReaderType>( } } - if debug_info_builder_context - .get_name(dwarf, unit, entry) - .is_some() - { - debug_info_builder.remove_type(get_uid(dwarf, unit, entry)); - } + // Remove the aliased type from the builder. + debug_info_builder.remove_type(get_uid(dwarf, unit, entry)); Some(Type::function( return_type.as_ref(), |
