Skip to content

Commit 66c6c21

Browse files
Fix crash in MDX whitespace
Related-to: GH-26. Closes GH-60.
1 parent b3a921c commit 66c6c21

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

src/construct/partial_mdx_jsx.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,17 +1070,19 @@ pub fn es_whitespace_inside(tokenizer: &mut Tokenizer) -> State {
10701070
tokenizer.consume();
10711071
State::Next(StateName::MdxJsxEsWhitespaceInside)
10721072
}
1073-
_ => {
1073+
Some(_)
10741074
if kind_after_index(tokenizer.parse_state.bytes, tokenizer.point.index)
1075-
== CharacterKind::Whitespace
1076-
{
1077-
tokenizer.consume();
1078-
State::Next(StateName::MdxJsxEsWhitespaceInside)
1079-
} else {
1080-
tokenizer.exit(Name::MdxJsxEsWhitespace);
1081-
State::Ok
1082-
}
1075+
== CharacterKind::Whitespace =>
1076+
{
1077+
tokenizer.consume();
1078+
State::Next(StateName::MdxJsxEsWhitespaceInside)
1079+
}
1080+
Some(_) => {
1081+
tokenizer.exit(Name::MdxJsxEsWhitespace);
1082+
State::Ok
10831083
}
1084+
// Handle EOF.
1085+
None => State::Nok,
10841086
}
10851087
}
10861088

tests/fuzz.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,5 +117,17 @@ fn fuzz() -> Result<(), String> {
117117
"11: gfm task list items followed by eols (GH-24)"
118118
);
119119

120+
assert_eq!(
121+
markdown::to_html_with_options(
122+
"<",
123+
&markdown::Options {
124+
parse: markdown::ParseOptions::mdx(),
125+
..Default::default()
126+
}
127+
),
128+
Ok("<p>&lt;</p>".to_string()),
129+
"12: mdx: handle invalid mdx without panic (GH-26)"
130+
);
131+
120132
Ok(())
121133
}

0 commit comments

Comments
 (0)