summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/ffi/repr.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/ext/ffi/repr.rs b/ext/ffi/repr.rs
index db03479dc..c21b2b0f1 100644
--- a/ext/ffi/repr.rs
+++ b/ext/ffi/repr.rs
@@ -145,14 +145,13 @@ where
let ptr = unsafe { ptr.add(offset) };
// SAFETY: Pointer is user provided.
- let cstr = unsafe { CStr::from_ptr(ptr as *const c_char) }
- .to_str()
- .map_err(|_| type_error("Invalid CString pointer, not valid UTF-8"))?;
- let value: v8::Local<v8::Value> = v8::String::new(scope, cstr)
- .ok_or_else(|| {
- type_error("Invalid CString pointer, string exceeds max length")
- })?
- .into();
+ let cstr = unsafe { CStr::from_ptr(ptr as *const c_char) }.to_bytes();
+ let value: v8::Local<v8::Value> =
+ v8::String::new_from_utf8(scope, cstr, v8::NewStringType::Normal)
+ .ok_or_else(|| {
+ type_error("Invalid CString pointer, string exceeds max length")
+ })?
+ .into();
Ok(value.into())
}