summaryrefslogtreecommitdiff
path: root/serde_v8
diff options
context:
space:
mode:
authorGeert-Jan Zwiers <geertjanzwiers@protonmail.com>2022-09-01 22:20:11 +0200
committerGitHub <noreply@github.com>2022-09-01 22:20:11 +0200
commit58e76098e6325ad16d552924d58c33bad6573c07 (patch)
treefe4016ce33c45fb3649504e072677f2dba9e2fcd /serde_v8
parent778eb1da24ac77635ffbc24e05e826bca973199b (diff)
fix(serde_v8): no panic on reading large text file (#15494)
Co-authored-by: Nayeem Rahman <nayeemrmn99@gmail.com>
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> {