summaryrefslogtreecommitdiff
path: root/serde_v8/src
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@gmail.com>2021-05-19 20:45:48 +0200
committerGitHub <noreply@github.com>2021-05-19 20:45:48 +0200
commiteb56186e4499c7584d2cfffdca4fde7ad3da16ee (patch)
treeda33bdd25a8356b78c539662002ebdcd44c29f88 /serde_v8/src
parent24da0aa37db14b0d40815222cf25b34055b13a6a (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.rs18
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),
- }
-}