diff options
author | Imanol Fernandez <mortimergoro@gmail.com> | 2017-04-17 19:39:22 +0200 |
---|---|---|
committer | Imanol Fernandez <mortimergoro@gmail.com> | 2017-05-04 01:07:23 +0200 |
commit | efb59b7ecdc8cd2a51b395e68e9bb072e1965469 (patch) | |
tree | 0d90daa6ec07f7df31d2dc27595f5da7661d52ab /components/script/dom/vrstageparameters.rs | |
parent | ed7686b42c02c5c1d769be952ef58b285f35a7f6 (diff) | |
download | servo-efb59b7ecdc8cd2a51b395e68e9bb072e1965469.tar.gz servo-efb59b7ecdc8cd2a51b395e68e9bb072e1965469.zip |
Fix unsafe Heap constructor usage in DOM objects
Diffstat (limited to 'components/script/dom/vrstageparameters.rs')
-rw-r--r-- | components/script/dom/vrstageparameters.rs | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/components/script/dom/vrstageparameters.rs b/components/script/dom/vrstageparameters.rs index 0bc319466c3..e709411c25a 100644 --- a/components/script/dom/vrstageparameters.rs +++ b/components/script/dom/vrstageparameters.rs @@ -26,28 +26,28 @@ pub struct VRStageParameters { unsafe_no_jsmanaged_fields!(WebVRStageParameters); impl VRStageParameters { - #[allow(unsafe_code)] - #[allow(unrooted_must_root)] - fn new_inherited(parameters: WebVRStageParameters, global: &GlobalScope) -> VRStageParameters { - let stage = VRStageParameters { + fn new_inherited(parameters: WebVRStageParameters) -> VRStageParameters { + VRStageParameters { reflector_: Reflector::new(), parameters: DOMRefCell::new(parameters), transform: Heap::default() - }; - // XXX unsound! - unsafe { - let _ = Float32Array::create(global.get_cx(), - CreateWith::Slice(&stage.parameters.borrow().sitting_to_standing_transform), - stage.transform.handle_mut()); } - - stage } + #[allow(unsafe_code)] pub fn new(parameters: WebVRStageParameters, global: &GlobalScope) -> Root<VRStageParameters> { - reflect_dom_object(box VRStageParameters::new_inherited(parameters, global), - global, - VRStageParametersBinding::Wrap) + let cx = global.get_cx(); + let stage_parameters = reflect_dom_object(box VRStageParameters::new_inherited(parameters), + global, + VRStageParametersBinding::Wrap); + unsafe { + let source = &stage_parameters.parameters.borrow().sitting_to_standing_transform; + let _ = Float32Array::create(cx, + CreateWith::Slice(source), + stage_parameters.transform.handle_mut()); + } + + stage_parameters } #[allow(unsafe_code)] |