diff options
Diffstat (limited to 'Userland/Libraries/LibWeb')
-rw-r--r-- | Userland/Libraries/LibWeb/HTML/Parser/HTMLToken.h | 13 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/HTML/Parser/HTMLTokenizer.cpp | 36 |
2 files changed, 26 insertions, 23 deletions
diff --git a/Userland/Libraries/LibWeb/HTML/Parser/HTMLToken.h b/Userland/Libraries/LibWeb/HTML/Parser/HTMLToken.h index 74cf4bb359..1649a20e7f 100644 --- a/Userland/Libraries/LibWeb/HTML/Parser/HTMLToken.h +++ b/Userland/Libraries/LibWeb/HTML/Parser/HTMLToken.h @@ -50,10 +50,7 @@ public: { HTMLToken token; token.m_type = Type::Character; - StringBuilder builder; - // FIXME: This narrows code_point to char, should this be append_code_point() instead? - builder.append(code_point); - token.m_comment_or_character.data = builder.to_string(); + token.set_code_point(code_point); return token; } @@ -97,6 +94,14 @@ public: } } + void set_code_point(u32 code_point) + { + VERIFY(is_character()); + StringBuilder builder; + builder.append_code_point(code_point); + m_comment_or_character.data = builder.to_string(); + } + String const& comment() const { VERIFY(is_comment()); diff --git a/Userland/Libraries/LibWeb/HTML/Parser/HTMLTokenizer.cpp b/Userland/Libraries/LibWeb/HTML/Parser/HTMLTokenizer.cpp index 2644c9dd3c..32e3c630c4 100644 --- a/Userland/Libraries/LibWeb/HTML/Parser/HTMLTokenizer.cpp +++ b/Userland/Libraries/LibWeb/HTML/Parser/HTMLTokenizer.cpp @@ -75,18 +75,17 @@ namespace Web::HTML { goto new_state; \ } while (0) -#define FLUSH_CODEPOINTS_CONSUMED_AS_A_CHARACTER_REFERENCE \ - do { \ - for (auto code_point : m_temporary_buffer) { \ - if (consumed_as_part_of_an_attribute()) { \ - m_current_builder.append_code_point(code_point); \ - } else { \ - create_new_token(HTMLToken::Type::Character); \ - m_current_builder.append_code_point(code_point); \ - m_current_token.m_comment_or_character.data = consume_current_builder(); \ - m_queued_tokens.enqueue(move(m_current_token)); \ - } \ - } \ +#define FLUSH_CODEPOINTS_CONSUMED_AS_A_CHARACTER_REFERENCE \ + do { \ + for (auto code_point : m_temporary_buffer) { \ + if (consumed_as_part_of_an_attribute()) { \ + m_current_builder.append_code_point(code_point); \ + } else { \ + create_new_token(HTMLToken::Type::Character); \ + m_current_token.set_code_point(code_point); \ + m_queued_tokens.enqueue(move(m_current_token)); \ + } \ + } \ } while (0) #define DONT_CONSUME_NEXT_INPUT_CHARACTER \ @@ -142,13 +141,12 @@ namespace Web::HTML { return m_queued_tokens.dequeue(); \ } while (0) -#define EMIT_CHARACTER(code_point) \ - do { \ - create_new_token(HTMLToken::Type::Character); \ - m_current_builder.append_code_point(code_point); \ - m_current_token.m_comment_or_character.data = consume_current_builder(); \ - m_queued_tokens.enqueue(move(m_current_token)); \ - return m_queued_tokens.dequeue(); \ +#define EMIT_CHARACTER(code_point) \ + do { \ + create_new_token(HTMLToken::Type::Character); \ + m_current_token.set_code_point(code_point); \ + m_queued_tokens.enqueue(move(m_current_token)); \ + return m_queued_tokens.dequeue(); \ } while (0) #define EMIT_CURRENT_CHARACTER \ |