diff options
Diffstat (limited to 'serde_v8/magic/u16string.rs')
-rw-r--r-- | serde_v8/magic/u16string.rs | 15 |
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.", + ))) + } } } |