summaryrefslogtreecommitdiff
path: root/serde_v8
diff options
context:
space:
mode:
Diffstat (limited to 'serde_v8')
-rw-r--r--serde_v8/magic/u16string.rs15
1 files changed, 11 insertions, 4 deletions
diff --git a/serde_v8/magic/u16string.rs b/serde_v8/magic/u16string.rs
index c1d080ac7..e304ea187 100644
--- a/serde_v8/magic/u16string.rs
+++ b/serde_v8/magic/u16string.rs
@@ -11,10 +11,17 @@ impl ToV8 for U16String {
&self,
scope: &mut v8::HandleScope<'a>,
) -> Result<v8::Local<'a, v8::Value>, crate::Error> {
- let v =
- v8::String::new_from_two_byte(scope, self, v8::NewStringType::Normal)
- .unwrap();
- Ok(v.into())
+ let maybe_v =
+ v8::String::new_from_two_byte(scope, self, v8::NewStringType::Normal);
+
+ // 'new_from_two_byte' can return 'None' if buffer length > kMaxLength.
+ if let Some(v) = maybe_v {
+ Ok(v.into())
+ } else {
+ Err(Error::Message(String::from(
+ "Cannot allocate String from UTF-16: buffer exceeds maximum length.",
+ )))
+ }
}
}