aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/vrstageparameters.rs
diff options
context:
space:
mode:
authorImanol Fernandez <mortimergoro@gmail.com>2017-04-17 19:39:22 +0200
committerImanol Fernandez <mortimergoro@gmail.com>2017-05-04 01:07:23 +0200
commitefb59b7ecdc8cd2a51b395e68e9bb072e1965469 (patch)
tree0d90daa6ec07f7df31d2dc27595f5da7661d52ab /components/script/dom/vrstageparameters.rs
parented7686b42c02c5c1d769be952ef58b285f35a7f6 (diff)
downloadservo-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.rs30
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)]