aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-23 14:46:59 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-23 14:46:59 +0100
commit61dcbf35e9afb074f63dbfd78f768c871b4de87b (patch)
tree71c7d01fbda9fc253909d48d9e1f177d3327f926
parent205aca90d6c21f3dd73b576c06f5ab8c1010772a (diff)
downloadunity-tools-61dcbf35e9afb074f63dbfd78f768c871b4de87b.tar
unity-tools-61dcbf35e9afb074f63dbfd78f768c871b4de87b.tar.bz2
unity-tools-61dcbf35e9afb074f63dbfd78f768c871b4de87b.tar.zst
fix path parsing in pptr
-rw-r--r--src/classes/pptr.rs7
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 {