summaryrefslogtreecommitdiff
path: root/rust/src
diff options
context:
space:
mode:
Diffstat (limited to 'rust/src')
-rw-r--r--rust/src/types.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/rust/src/types.rs b/rust/src/types.rs
index ffa507d8..1387ffb3 100644
--- a/rust/src/types.rs
+++ b/rust/src/types.rs
@@ -2080,13 +2080,13 @@ impl NamedTypeReference {
match ty.type_class() {
TypeClass::NamedTypeReferenceClass => {
// Recurse into the NTR type until we get the target type.
- let ntr = ty.get_named_type_reference().unwrap();
+ let ntr = ty
+ .get_named_type_reference()
+ .expect("NTR type class should always have a valid NTR");
match visited.insert(ntr.id()) {
true => ntr.target_helper(bv, visited),
- false => {
- log::error!("Can't get target for recursively defined type!");
- None
- }
+ // Cyclic reference, return None.
+ false => None,
}
}
// Found target type
@@ -2095,6 +2095,8 @@ impl NamedTypeReference {
}
/// Type referenced by this [`NamedTypeReference`].
+ ///
+ /// Will return `None` if the reference is cyclic, or the target type does not exist.
pub fn target(&self, bv: &BinaryView) -> Option<Ref<Type>> {
self.target_helper(bv, &mut HashSet::new())
}