diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-23 14:46:59 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-23 14:46:59 +0100 |
commit | 61dcbf35e9afb074f63dbfd78f768c871b4de87b (patch) | |
tree | 71c7d01fbda9fc253909d48d9e1f177d3327f926 /src/classes/pptr.rs | |
parent | 205aca90d6c21f3dd73b576c06f5ab8c1010772a (diff) | |
download | unity-tools-61dcbf35e9afb074f63dbfd78f768c871b4de87b.tar unity-tools-61dcbf35e9afb074f63dbfd78f768c871b4de87b.tar.bz2 unity-tools-61dcbf35e9afb074f63dbfd78f768c871b4de87b.tar.zst |
fix path parsing in pptr
Diffstat (limited to 'src/classes/pptr.rs')
-rw-r--r-- | src/classes/pptr.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/classes/pptr.rs b/src/classes/pptr.rs index 5d57c20..14c72b6 100644 --- a/src/classes/pptr.rs +++ b/src/classes/pptr.rs @@ -70,15 +70,16 @@ impl<T: FromValue> PPtr<T> { } else { &self.ecx.externals[self.file_id as usize - 1].path_name }; + debug!("ref path {path:?}"); if let Some(path) = path.strip_prefix("archive:") { - let path = path.split_once("/").unwrap_or(("", path)).1; + let path = path.split("/").last().unwrap_or(path); let ni = bundle .fs .header .nodes() .iter() .find(|n| n.name == path) - .unwrap() + .ok_or(anyhow!("cannot find {path:?} in bundle"))? .clone(); let file = bundle.get_fs_file(&ni).unwrap(); let mut file = file.lock().unwrap(); @@ -86,7 +87,7 @@ impl<T: FromValue> PPtr<T> { .objects .iter() .find(|o| o.path_id == self.path_id) - .unwrap() + .ok_or(anyhow!("object with path_id = {} not found", self.path_id))? .clone(); file.read_object(ob)?.parse() } else if *path == bundle.default_resources.ecx.name { |