summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-02-04 13:39:05 -0500
committerMason Reed <mason@vector35.com>2025-02-04 13:39:05 -0500
commitf097e0a204958cfab61ea0607223f8286cd437da (patch)
tree72610d3f6675ecab539333019984d041fb26fcac /plugins
parentd6856d77526cddf915e235a5842f2e57c8b33284 (diff)
Fix crash with unnamed function self reference in DWARF import
Diffstat (limited to 'plugins')
-rw-r--r--plugins/dwarf/dwarf_import/src/die_handlers.rs16
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(),