diff --git a/crates/docx/src/read/styles.rs b/crates/docx/src/read/styles.rs index 3d7e61bf8..d2946b8ec 100644 --- a/crates/docx/src/read/styles.rs +++ b/crates/docx/src/read/styles.rs @@ -326,7 +326,8 @@ impl Reader<'_> { let (Some(id), Some(abs)) = (n.attr("w:numId").and_then(u32_of), n.child_val("w:abstractNumId").and_then(u32_of)) else { continue }; let (mut start_overrides, mut level_overrides) = (Vec::new(), Vec::new()); for o in n.children("w:lvlOverride").take(9) { - let Some(lvl) = numbering_level_index(o.attr("w:ilvl")) else { continue }; + let Some(raw_level) = o.attr("w:ilvl") else { continue }; + let Some(lvl) = numbering_level_index(Some(raw_level)) else { continue }; let lvl = lvl as u8; if let Some(s) = o.child_val("w:startOverride").and_then(u32_of) { start_overrides.push((lvl, s)); diff --git a/crates/docx/tests/it/passthrough.rs b/crates/docx/tests/it/passthrough.rs index 97741a813..9e5f35a9f 100644 --- a/crates/docx/tests/it/passthrough.rs +++ b/crates/docx/tests/it/passthrough.rs @@ -322,7 +322,7 @@ fn list_identities_survive_and_a_copied_definition_gets_none() { #[test] fn malformed_numbering_levels_are_skipped_instead_of_becoming_level_zero() { - let numbering = r#""#; + let numbering = r#""#; let body = r#"default levelvalid levelnegative levelout of rangeoverflow"#; let bytes = package(body, &[("rId1", &format!("{REL}/numbering"), "numbering.xml")], &[], &[("word/numbering.xml", numbering)]); let doc = craft_docx::read(&bytes).unwrap();