aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xrrigidtransform.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/xrrigidtransform.rs')
-rw-r--r--components/script/dom/xrrigidtransform.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/components/script/dom/xrrigidtransform.rs b/components/script/dom/xrrigidtransform.rs
index 5e1f720411e..ca73121d931 100644
--- a/components/script/dom/xrrigidtransform.rs
+++ b/components/script/dom/xrrigidtransform.rs
@@ -77,6 +77,12 @@ impl XRRigidTransform {
orientation.z as f32,
orientation.w as f32,
);
+
+ if !rotate.i.is_finite() {
+ // if quaternion has zero norm, we'll get an infinite or NaN
+ // value for each element. This is preferable to checking for zero.
+ return Err(Error::InvalidState);
+ }
let transform = TypedRigidTransform3D::new(rotate, translate);
Ok(XRRigidTransform::new(&window.global(), transform))
}