diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-05-19 20:45:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-19 20:45:48 +0200 |
commit | eb56186e4499c7584d2cfffdca4fde7ad3da16ee (patch) | |
tree | da33bdd25a8356b78c539662002ebdcd44c29f88 /serde_v8/src | |
parent | 24da0aa37db14b0d40815222cf25b34055b13a6a (diff) |
fix(serde_v8): remove intentional deserialization error on non-utf8 strings (#10156)
Co-authored-by: Bartek IwaĆczuk <biwanczuk@gmail.com>
Diffstat (limited to 'serde_v8/src')
-rw-r--r-- | serde_v8/src/de.rs | 18 |
1 files changed, 1 insertions, 17 deletions
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<String>` in rusty-v8 let v8_string = v8::Local::<v8::String>::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<v8::String>, -) -> Option<String> { - let string = s.to_rust_string_lossy(scope); - match string.find(std::char::REPLACEMENT_CHARACTER) { - Some(_) => None, - None => Some(string), - } -} |