Skip to content

Commit 8f59064

Browse files
committed
Fix detect function panic
1 parent acbd18a commit 8f59064

1 file changed

Lines changed: 11 additions & 12 deletions

File tree

  • src/scripts/ex_hibit/arc

src/scripts/ex_hibit/arc/grp.rs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -306,33 +306,32 @@ fn parse_name_info(name: &str) -> Result<NameInfo> {
306306
name
307307
));
308308
}
309+
let name = name.as_bytes();
309310
let prefix = &name[..3];
310-
if !prefix.eq_ignore_ascii_case("res") {
311+
if !prefix.eq_ignore_ascii_case(b"res") {
311312
return Err(anyhow::anyhow!(
312-
"Filename '{}' does not start with 'res'.",
313+
"Filename '{:#?}' does not start with 'res'.",
313314
name
314315
));
315316
}
316317
let suffix = &name[name.len() - 4..];
317-
if !suffix.eq_ignore_ascii_case(".grp") {
318+
if !suffix.eq_ignore_ascii_case(b".grp") {
318319
return Err(anyhow::anyhow!(
319-
"Filename '{}' does not end with '.grp'.",
320+
"Filename '{:#?}' does not end with '.grp'.",
320321
name
321322
));
322323
}
323324
let digits = &name[3..name.len() - 4];
324-
if digits.is_empty() || !digits.chars().all(|c| c.is_ascii_digit()) {
325+
if digits.is_empty() || !digits.iter().all(|c| c.is_ascii_digit()) {
325326
return Err(anyhow::anyhow!(
326-
"Filename '{}' does not contain a numeric sequence.",
327+
"Filename '{:#?}' does not contain a numeric sequence.",
327328
name
328329
));
329330
}
330-
let arc_num = digits.parse::<u32>().with_context(|| {
331-
format!(
332-
"Failed to parse archive number from '{}' (digits '{}').",
333-
name, digits
334-
)
335-
})?;
331+
let arc_num = std::str::from_utf8(digits)
332+
.with_context(|| format!("Failed to parse archive number from '{:#?}' (digits '{:#?}').", name, digits))?
333+
.parse::<u32>()
334+
.with_context(|| format!("Failed to parse archive number from '{:#?}' (digits '{:#?}').", name, digits))?;
336335
Ok(NameInfo {
337336
digits_offset: 3,
338337
digits_len: digits.len(),

0 commit comments

Comments
 (0)