Fix unsafe Heap constructor usage in DOM objects

This commit is contained in:
Imanol Fernandez 2017-04-17 19:39:22 +02:00
parent ed7686b42c
commit efb59b7ecd
7 changed files with 82 additions and 84 deletions

View file

@ -28,29 +28,29 @@ pub struct VREyeParameters {
unsafe_no_jsmanaged_fields!(WebVREyeParameters);
impl VREyeParameters {
#[allow(unsafe_code)]
#[allow(unrooted_must_root)]
fn new_inherited(parameters: WebVREyeParameters, global: &GlobalScope) -> VREyeParameters {
let fov = VRFieldOfView::new(&global, parameters.field_of_view.clone());
let result = VREyeParameters {
fn new_inherited(parameters: WebVREyeParameters, fov: &VRFieldOfView) -> VREyeParameters {
VREyeParameters {
reflector_: Reflector::new(),
parameters: DOMRefCell::new(parameters),
offset: Heap::default(),
fov: JS::from_ref(&*fov)
};
unsafe {
let _ = Float32Array::create(global.get_cx(),
CreateWith::Slice(&result.parameters.borrow().offset),
result.offset.handle_mut());
}
result
}
#[allow(unsafe_code)]
pub fn new(parameters: WebVREyeParameters, global: &GlobalScope) -> Root<VREyeParameters> {
reflect_dom_object(box VREyeParameters::new_inherited(parameters, global),
global,
VREyeParametersBinding::Wrap)
let fov = VRFieldOfView::new(&global, parameters.field_of_view.clone());
let eye_parameters = reflect_dom_object(box VREyeParameters::new_inherited(parameters, &fov),
global,
VREyeParametersBinding::Wrap);
unsafe {
let _ = Float32Array::create(global.get_cx(),
CreateWith::Slice(&eye_parameters.parameters.borrow().offset),
eye_parameters.offset.handle_mut());
}
eye_parameters
}
}