Root js_object in TextEncoder::Encode

This commit is contained in:
Anthony Ramine 2016-08-28 21:50:23 +02:00
parent 897a81e95b
commit 3e32948a39

View file

@ -74,12 +74,13 @@ impl TextEncoderMethods for TextEncoder {
unsafe { unsafe {
let encoded = self.encoder.encode(&input.0, EncoderTrap::Strict).unwrap(); let encoded = self.encoder.encode(&input.0, EncoderTrap::Strict).unwrap();
let length = encoded.len() as u32; let length = encoded.len() as u32;
let js_object: *mut JSObject = JS_NewUint8Array(cx, length); rooted!(in(cx) let js_object = JS_NewUint8Array(cx, length));
assert!(!js_object.is_null());
let mut is_shared = false; let mut is_shared = false;
let js_object_data: *mut uint8_t = JS_GetUint8ArrayData(js_object, &mut is_shared, ptr::null()); let js_object_data: *mut uint8_t = JS_GetUint8ArrayData(js_object.get(), &mut is_shared, ptr::null());
assert!(!is_shared); assert!(!is_shared);
ptr::copy_nonoverlapping(encoded.as_ptr(), js_object_data, length as usize); ptr::copy_nonoverlapping(encoded.as_ptr(), js_object_data, length as usize);
js_object js_object.get()
} }
} }
} }