aboutsummaryrefslogtreecommitdiff
path: root/crates/rsli/src/lib.rs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-02-12 00:43:40 +0300
committerValentin Popov <valentin@popov.link>2026-02-12 00:43:40 +0300
commit662b292b5b47d0f7df3b19808db746bbc2ecc48c (patch)
treedf80622739c975eda645acf8754f3331cbdd1c82 /crates/rsli/src/lib.rs
parent3410b54793c3a1808e58d0fae94fb2ebd5f81015 (diff)
downloadfparkan-662b292b5b47d0f7df3b19808db746bbc2ecc48c.tar.xz
fparkan-662b292b5b47d0f7df3b19808db746bbc2ecc48c.zip
feat: обновить методы обработки данных и улучшить обработку ошибок в библиотеке
Diffstat (limited to 'crates/rsli/src/lib.rs')
-rw-r--r--crates/rsli/src/lib.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/crates/rsli/src/lib.rs b/crates/rsli/src/lib.rs
index 1573898..ef29f41 100644
--- a/crates/rsli/src/lib.rs
+++ b/crates/rsli/src/lib.rs
@@ -191,7 +191,7 @@ impl Library {
pub fn load(&self, id: EntryId) -> Result<Vec<u8>> {
let entry = self.entry_by_id(id)?;
- let packed = self.packed_slice(entry)?;
+ let packed = self.packed_slice(id, entry)?;
decode_payload(
packed,
entry.meta.method,
@@ -208,7 +208,7 @@ impl Library {
pub fn load_packed(&self, id: EntryId) -> Result<PackedResource> {
let entry = self.entry_by_id(id)?;
- let packed = self.packed_slice(entry)?.to_vec();
+ let packed = self.packed_slice(id, entry)?.to_vec();
Ok(PackedResource {
meta: entry.meta.clone(),
packed,
@@ -231,7 +231,7 @@ impl Library {
pub fn load_fast(&self, id: EntryId) -> Result<ResourceData<'_>> {
let entry = self.entry_by_id(id)?;
if entry.meta.method == PackMethod::None {
- let packed = self.packed_slice(entry)?;
+ let packed = self.packed_slice(id, entry)?;
let size =
usize::try_from(entry.meta.unpacked_size).map_err(|_| Error::IntegerOverflow)?;
if packed.len() < size {
@@ -255,7 +255,7 @@ impl Library {
})
}
- fn packed_slice<'a>(&'a self, entry: &EntryRecord) -> Result<&'a [u8]> {
+ fn packed_slice<'a>(&'a self, id: EntryId, entry: &EntryRecord) -> Result<&'a [u8]> {
let start = entry.effective_offset;
let end = start
.checked_add(entry.packed_size_available)
@@ -263,7 +263,7 @@ impl Library {
self.bytes
.get(start..end)
.ok_or(Error::EntryDataOutOfBounds {
- id: 0,
+ id: id.0,
offset: u64::try_from(start).unwrap_or(u64::MAX),
size: entry.packed_size_declared,
file_len: u64::try_from(self.bytes.len()).unwrap_or(u64::MAX),