From db3c46a613a2b1c1671a38f87fdd268a12539c3f Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Wed, 26 Oct 2022 12:56:18 +0200 Subject: Fix GFM tables interfering with other constructs Closes GH-19. Co-authored-by: Christian Murphy --- src/construct/gfm_table.rs | 2 ++ tests/fuzz.rs | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/construct/gfm_table.rs b/src/construct/gfm_table.rs index 58b7110..e055e1d 100644 --- a/src/construct/gfm_table.rs +++ b/src/construct/gfm_table.rs @@ -331,6 +331,7 @@ pub fn head_row_break(tokenizer: &mut Tokenizer) -> State { match tokenizer.current { None => { tokenizer.tokenize_state.seen = false; + tokenizer.tokenize_state.size = 0; State::Nok } Some(b'\n') => { @@ -427,6 +428,7 @@ pub fn head_delimiter_start(tokenizer: &mut Tokenizer) -> State { tokenizer.interrupt = false; if tokenizer.lazy || tokenizer.pierce { + tokenizer.tokenize_state.size = 0; State::Nok } else { tokenizer.enter(Name::GfmTableDelimiterRow); diff --git a/tests/fuzz.rs b/tests/fuzz.rs index 72f365e..1e80701 100644 --- a/tests/fuzz.rs +++ b/tests/fuzz.rs @@ -68,5 +68,11 @@ fn fuzz() -> Result<(), String> { "6-b: container close after unclosed fenced code, with eol (list, GH-16)" ); + assert_eq!( + to_html_with_options("> x\n``", &Options::gfm()), + Ok("
\n

x

\n
\n

``

".into()), + "7: lazy container lines almost starting fenced code (GH-19)" + ); + Ok(()) } -- cgit