From 48dad22b3f2cfc1c4c8dd19976cbe088da932eb4 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Wed, 24 Nov 2021 21:10:13 -0800 Subject: [PATCH] Collapse surrogate encode into extend_from_slice call --- src/read.rs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/read.rs b/src/read.rs index 3d72880..035c865 100644 --- a/src/read.rs +++ b/src/read.rs @@ -864,13 +864,11 @@ fn parse_escape<'de, R: Read<'de>>( return error(read, ErrorCode::LoneLeadingSurrogateInHexEscape); } - let utf8_bytes = [ + scratch.extend_from_slice(&[ (n >> 12 & 0x0F) as u8 | 0b1110_0000, (n >> 6 & 0x3F) as u8 | 0b1000_0000, (n & 0x3F) as u8 | 0b1000_0000, - ]; - - scratch.extend_from_slice(&utf8_bytes); + ]); return Ok(()); } @@ -886,13 +884,11 @@ fn parse_escape<'de, R: Read<'de>>( return error(read, ErrorCode::UnexpectedEndOfHexEscape); } - let utf8_bytes = [ + scratch.extend_from_slice(&[ (n1 >> 12 & 0x0F) as u8 | 0b1110_0000, (n1 >> 6 & 0x3F) as u8 | 0b1000_0000, (n1 & 0x3F) as u8 | 0b1000_0000, - ]; - - scratch.extend_from_slice(&utf8_bytes); + ]); return Ok(()); } @@ -904,13 +900,11 @@ fn parse_escape<'de, R: Read<'de>>( return error(read, ErrorCode::UnexpectedEndOfHexEscape); } - let utf8_bytes = [ + scratch.extend_from_slice(&[ (n1 >> 12 & 0x0F) as u8 | 0b1110_0000, (n1 >> 6 & 0x3F) as u8 | 0b1000_0000, (n1 & 0x3F) as u8 | 0b1000_0000, - ]; - - scratch.extend_from_slice(&utf8_bytes); + ]); // The \ prior to this byte started an escape sequence, // so we need to parse that now.