Skip to content

Commit d495356

Browse files
committed
Fix a bug in unicode-range tokenization.
1 parent 6a1f3b7 commit d495356

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

src/css-parsing-tests/component_value_list.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,14 +388,15 @@
388388
["unicode-range", 16, 2097152]
389389
],
390390

391-
"ù+12 Ü+12 u +12 U+ 12 U+12 - 20 U+1?2 U+1?-50", [
391+
"ù+12 Ü+12 u +12 U+ 12 U+12 - 20 U+1?2 U+1?-50 U+1- 2", [
392392
["ident", "ù"], ["number", "+12", 12, "integer"], " ",
393393
["ident", "Ü"], ["number", "+12", 12, "integer"], " ",
394394
["ident", "u"], " ", ["number", "+12", 12, "integer"], " ",
395395
["ident", "U"], "+", " ", ["number", "12", 12, "integer"], " ",
396396
["unicode-range", 18, 18], " ", "-", " ", ["number", "20", 20, "integer"], " ",
397397
["unicode-range", 16, 31], ["number", "2", 2, "integer"], " ",
398-
["unicode-range", 16, 31], ["number", "-50", -50, "integer"]
398+
["unicode-range", 16, 31], ["number", "-50", -50, "integer"], " ",
399+
["unicode-range", 1, 1], "-", " ", ["number", "2", 2, "integer"]
399400
],
400401

401402
"~=|=^=$=*=||<!------> |/**/| ~/**/=", [

src/tokenizer.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,9 @@ fn consume_unicode_range<'a>(tokenizer: &mut Tokenizer<'a>) -> Token<'a> {
833833
} else {
834834
start = first;
835835
hex.truncate(0);
836-
if !tokenizer.is_eof() && tokenizer.next_char() == '-' {
836+
if tokenizer.has_at_least(1) &&
837+
tokenizer.next_char() == '-' &&
838+
matches!(tokenizer.char_at(1), '0'...'9' | 'A'...'F' | 'a'...'f') {
837839
tokenizer.advance(1);
838840
while hex.len() < 6 && !tokenizer.is_eof() {
839841
let c = tokenizer.next_char();

0 commit comments

Comments
 (0)