Skip to content

Commit 265fb7e

Browse files
committed
Move discard of expected byte immediately after peek
1 parent 1422076 commit 265fb7e

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/read.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -881,7 +881,9 @@ fn parse_escape<'de, R: Read<'de>>(
881881
// utf-8 string the surrogates are required to be paired,
882882
// whereas deserializing a byte string accepts lone surrogates.
883883
n1 @ 0xD800..=0xDBFF => {
884-
if tri!(peek_or_eof(read)) != b'\\' {
884+
if tri!(peek_or_eof(read)) == b'\\' {
885+
read.discard();
886+
} else {
885887
return if validate {
886888
read.discard();
887889
error(read, ErrorCode::UnexpectedEndOfHexEscape)
@@ -890,9 +892,10 @@ fn parse_escape<'de, R: Read<'de>>(
890892
Ok(())
891893
};
892894
}
893-
read.discard();
894895

895-
if tri!(peek_or_eof(read)) != b'u' {
896+
if tri!(peek_or_eof(read)) == b'u' {
897+
read.discard();
898+
} else {
896899
return if validate {
897900
read.discard();
898901
error(read, ErrorCode::UnexpectedEndOfHexEscape)
@@ -906,7 +909,6 @@ fn parse_escape<'de, R: Read<'de>>(
906909
parse_escape(read, validate, scratch)
907910
};
908911
}
909-
read.discard();
910912

911913
let n2 = tri!(read.decode_hex_escape());
912914

0 commit comments

Comments
 (0)