From f6ddc6cf9a41d0b8f84d6cb453e9f63708e05e72 Mon Sep 17 00:00:00 2001 From: NightEule5 <24661563+NightEule5@users.noreply.github.com> Date: Mon, 3 Jul 2023 20:10:21 -0600 Subject: [PATCH] Fix odd-number closing dash comment bug --- src/parser/base.rs | 13 ++++--------- src/parser/constants.rs | 1 + src/tests.rs | 11 +++++++++++ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/parser/base.rs b/src/parser/base.rs index 7b8c498..dc40aa9 100644 --- a/src/parser/base.rs +++ b/src/parser/base.rs @@ -131,16 +131,11 @@ impl<'a> Parser<'a> { if self .stream - .slice_len(idx, constants::COMMENT.len()) - .eq(constants::COMMENT) + .slice_len(idx, constants::COMMENT_END.len()) + .eq(constants::COMMENT_END) { - self.stream.advance_by(constants::COMMENT.len()); - - let is_end_of_comment = self.stream.expect_and_skip_cond(b'>'); - - if is_end_of_comment { - return self.stream.slice(start, self.stream.idx); - } + self.stream.advance_by(constants::COMMENT_END.len()); + return self.stream.slice(start, self.stream.idx); } self.stream.advance(); diff --git a/src/parser/constants.rs b/src/parser/constants.rs index ad3de6d..b262a1b 100644 --- a/src/parser/constants.rs +++ b/src/parser/constants.rs @@ -1,4 +1,5 @@ pub const COMMENT: &[u8; 2] = b"--"; +pub const COMMENT_END: &[u8; 3] = b"-->"; pub const VOID_TAGS: &[&[u8]; 15] = &[ b"area", b"base", b"br", b"col", b"embed", b"hr", b"img", b"input", b"keygen", b"link", b"meta", b"param", b"source", b"track", b"wbr", diff --git a/src/tests.rs b/src/tests.rs index 046861a..c5a9e3b 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -648,6 +648,17 @@ fn comment() { ); } +#[test] +fn odd_dash_comment_regression() { + let dom = parse("", Default::default()).unwrap(); + let nodes = dom.nodes(); + assert_eq!(nodes.len(), 1); + assert_eq!( + nodes[0].as_comment().unwrap().as_utf8_str(), + "" + ); +} + #[test] fn tag_all_children() { fn assert_len(input: &str, len: usize) {