summaryrefslogtreecommitdiff
path: root/serde_v8
diff options
context:
space:
mode:
Diffstat (limited to 'serde_v8')
-rw-r--r--serde_v8/ser.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/serde_v8/ser.rs b/serde_v8/ser.rs
index 31d3e3144..3f8ad3b32 100644
--- a/serde_v8/ser.rs
+++ b/serde_v8/ser.rs
@@ -447,11 +447,16 @@ impl<'a, 'b, 'c> ser::Serializer for Serializer<'a, 'b, 'c> {
}
fn serialize_str(self, v: &str) -> JsResult<'a> {
- Ok(
- v8::String::new(&mut self.scope.borrow_mut(), v)
- .unwrap()
- .into(),
- )
+ let maybe_str = v8::String::new(&mut self.scope.borrow_mut(), v);
+
+ // v8 string can return 'None' if buffer length > kMaxLength.
+ if let Some(str) = maybe_str {
+ Ok(str.into())
+ } else {
+ Err(Error::Message(String::from(
+ "Cannot allocate String: buffer exceeds maximum length.",
+ )))
+ }
}
fn serialize_bytes(self, v: &[u8]) -> JsResult<'a> {