aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-10-26 12:56:18 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-10-26 12:56:18 +0200
commitdb3c46a613a2b1c1671a38f87fdd268a12539c3f (patch)
treed84d1108198acb63a1f0be705e5ecef016d232b4
parentccf6775c848ba798c011654905269e3300e0079a (diff)
downloadmarkdown-rs-db3c46a613a2b1c1671a38f87fdd268a12539c3f.tar.gz
markdown-rs-db3c46a613a2b1c1671a38f87fdd268a12539c3f.tar.bz2
markdown-rs-db3c46a613a2b1c1671a38f87fdd268a12539c3f.zip
Fix GFM tables interfering with other constructs
Closes GH-19. Co-authored-by: Christian Murphy <christian.murphy.42@gmail.com>
-rw-r--r--src/construct/gfm_table.rs2
-rw-r--r--tests/fuzz.rs6
2 files changed, 8 insertions, 0 deletions
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("<blockquote>\n<p>x</p>\n</blockquote>\n<p>``</p>".into()),
+ "7: lazy container lines almost starting fenced code (GH-19)"
+ );
+
Ok(())
}