Fix recursion bug when reading parent class

This commit is contained in:
a2x 2024-04-10 02:15:48 +10:00
parent 8b1ecb7afb
commit 1059075dda
1 changed files with 15 additions and 6 deletions

View File

@ -89,12 +89,21 @@ fn read_class_binding(
let name = binding.name.read_string(process)?.to_string(); let name = binding.name.read_string(process)?.to_string();
let parent = binding let parent = binding.base_classes.non_null().and_then(|ptr| {
.base_classes let base_class = ptr.read(process).ok()?;
.non_null() let parent_class = base_class.prev.read(process).ok()?;
.and_then(|ptr| ptr.read(process).ok())
.and_then(|base_class| read_class_binding(process, base_class.prev).ok()) let module_name = parent_class.module_name.read_string(process).ok()?.to_string();
.map(Box::new); let name = parent_class.name.read_string(process).ok()?.to_string();
Some(Box::new(Class {
name,
module_name,
parent: None,
metadata: Vec::new(),
fields: Vec::new(),
}))
});
let fields = read_class_binding_fields(process, &binding)?; let fields = read_class_binding_fields(process, &binding)?;
let metadata = read_class_binding_metadata(process, &binding)?; let metadata = read_class_binding_metadata(process, &binding)?;