Skip to content

Commit 1fdc4a5

Browse files
committed
Fix a bug in unicode-range serialization.
1 parent a74d8aa commit 1fdc4a5

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

src/css-parsing-tests/component_value_list.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -380,8 +380,8 @@
380380
["unicode-range", 1048576, 2097151], "?"
381381
],
382382

383-
"u+1-2 U+100000-2 U+1000000-2 U+10-200000", [
384-
["unicode-range", 1, 2], " ",
383+
"u+20-3F U+100000-2 U+1000000-2 U+10-200000", [
384+
["unicode-range", 32, 63], " ",
385385
["unicode-range", 1048576, 2], " ",
386386
["unicode-range", 1048576, 1048576], ["number", "0", 0, "integer"],
387387
["number", "-2", -2, "integer"], " ",

src/serializer.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,13 @@ impl<'a> ToCss for Token<'a> {
120120
Token::UnicodeRange(start, end) => {
121121
try!(dest.write_str("U+"));
122122
let bits = cmp::min(start.trailing_zeros(), (!end).trailing_zeros());
123-
if bits >= 4 && start >> bits == end >> bits {
124-
let question_marks = bits / 4;
125-
let common = start >> question_marks * 4;
126-
if common != 0 {
127-
try!(write!(dest, "{:X}", common));
123+
let question_marks = bits / 4;
124+
let bits = question_marks * 4;
125+
let truncated_start = start >> bits;
126+
let truncated_end = end >> bits;
127+
if truncated_start == truncated_end {
128+
if truncated_start != 0 {
129+
try!(write!(dest, "{:X}", truncated_start));
128130
}
129131
for _ in (0..question_marks) {
130132
try!(dest.write_str("?"));

0 commit comments

Comments
 (0)