Skip to content

Commit 9dbbbbf

Browse files
committed
tokenizer: Don't use utf8 logic to parse quoted strings without escapes.
1 parent 360f1dc commit 9dbbbbf

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/tokenizer.rs

+11-11
Original file line numberDiff line numberDiff line change
@@ -580,43 +580,43 @@ fn consume_quoted_string<'a>(tokenizer: &mut Tokenizer<'a>, single_quote: bool)
580580
if tokenizer.is_eof() {
581581
return Ok(Borrowed(tokenizer.slice_from(start_pos)))
582582
}
583-
match tokenizer.next_char() {
584-
'"' if !single_quote => {
583+
match tokenizer.next_byte_unchecked() {
584+
b'"' if !single_quote => {
585585
let value = tokenizer.slice_from(start_pos);
586586
tokenizer.advance(1);
587587
return Ok(Borrowed(value))
588588
}
589-
'\'' if single_quote => {
589+
b'\'' if single_quote => {
590590
let value = tokenizer.slice_from(start_pos);
591591
tokenizer.advance(1);
592592
return Ok(Borrowed(value))
593593
}
594-
'\\' | '\0' => {
594+
b'\\' | b'\0' => {
595595
string = tokenizer.slice_from(start_pos).to_owned();
596596
break
597597
}
598-
'\n' | '\r' | '\x0C' => return Err(()),
598+
b'\n' | b'\r' | b'\x0C' => return Err(()),
599599
_ => {
600-
tokenizer.consume_char();
600+
tokenizer.consume_byte();
601601
}
602602
}
603603
}
604604

605605
while !tokenizer.is_eof() {
606-
if matches!(tokenizer.next_char(), '\n' | '\r' | '\x0C') {
606+
if matches!(tokenizer.next_byte_unchecked(), b'\n' | b'\r' | b'\x0C') {
607607
return Err(());
608608
}
609609
match tokenizer.consume_char() {
610610
'"' if !single_quote => break,
611611
'\'' if single_quote => break,
612612
'\\' => {
613613
if !tokenizer.is_eof() {
614-
match tokenizer.next_char() {
614+
match tokenizer.next_byte_unchecked() {
615615
// Escaped newline
616-
'\n' | '\x0C' => tokenizer.advance(1),
617-
'\r' => {
616+
b'\n' | b'\x0C' => tokenizer.advance(1),
617+
b'\r' => {
618618
tokenizer.advance(1);
619-
if !tokenizer.is_eof() && tokenizer.next_char() == '\n' {
619+
if tokenizer.next_byte() == Some(b'\n') {
620620
tokenizer.advance(1);
621621
}
622622
}

0 commit comments

Comments
 (0)