From 72eb6e1d7cfec721e33ac08943c0f97dce93fc23 Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Wed, 19 May 2021 20:45:48 +0200 Subject: fix(serde_v8): remove intentional deserialization error on non-utf8 strings (#10156) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bartek IwaƄczuk --- serde_v8/src/de.rs | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) (limited to 'serde_v8/src') diff --git a/serde_v8/src/de.rs b/serde_v8/src/de.rs index f351d7870..b0237d514 100644 --- a/serde_v8/src/de.rs +++ b/serde_v8/src/de.rs @@ -154,12 +154,8 @@ impl<'de, 'a, 'b, 's, 'x> de::Deserializer<'de> V: Visitor<'de>, { if self.input.is_string() { - // TODO(@AaronO): implement a `.to_rust_string -> Option` in rusty-v8 let v8_string = v8::Local::::try_from(self.input).unwrap(); - let string = match v8_to_rust_string(self.scope, v8_string) { - Some(string) => string, - None => return Err(Error::ExpectedUtf8), - }; + let string = v8_string.to_rust_string_lossy(self.scope); visitor.visit_string(string) } else { Err(Error::ExpectedString) @@ -619,15 +615,3 @@ impl<'de, 'a, 'b, 's> de::VariantAccess<'de> de::Deserializer::deserialize_struct(&mut d, "", fields, visitor) } } - -// Like v8::String::to_rust_string_lossy except returns None on non-utf8 -fn v8_to_rust_string( - scope: &mut v8::HandleScope, - s: v8::Local, -) -> Option { - let string = s.to_rust_string_lossy(scope); - match string.find(std::char::REPLACEMENT_CHARACTER) { - Some(_) => None, - None => Some(string), - } -} -- cgit v1.2.3