Repository navigation
Conversation
The escape consumer discarded the first hex digit and treated the terminating whitespace as a gap it could skip, so #\31 0 matched nothing instead of id="10".
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A CSS hex escape dropped its first digit, then kept reading hex digits through the whitespace that is supposed to end the escape.
#\31 0, the usual way to name an id that starts with a digit, became U+0010 and matched nothing.\26 Bbecamekinstead of&B.The digit already consumed is part of the value, and one whitespace ends the escape. A seventh hex digit is still an error, same as the existing lexer test. Zero, a surrogate, or a value past the Unicode maximum becomes U+FFFD, which is what the CSS syntax spec returns for those.
link[href*=css\?family]already parses. The selector in #19 writes a second backslash, so that?is not the escape. This patch does not change that case.Test plan
#\31 0token value is#10, and it matches<div id="10">but notid="1"orid="310"\26 Btoken value is&B"\0a f"is a newline followed byf, and"\0af"is still U+00AFgo test -count=1 .passed#\x10, the ident wask, and the string was¯