diff --git a/components/style/properties/helpers/animated_properties.mako.rs b/components/style/properties/helpers/animated_properties.mako.rs index 3f5d91ba467..e68faeb8924 100644 --- a/components/style/properties/helpers/animated_properties.mako.rs +++ b/components/style/properties/helpers/animated_properties.mako.rs @@ -828,6 +828,10 @@ macro_rules! repeated_vec_impl { $(impl Animatable for $ty { fn add_weighted(&self, other: &Self, self_portion: f64, other_portion: f64) -> Result { + // If the length of either list is zero, the least common multiple is undefined. + if cmp::min(self.len(), other.len()) < 1 { + return Err(()); + } use num_integer::lcm; let len = lcm(self.len(), other.len()); self.iter().cycle().zip(other.iter().cycle()).take(len).map(|(me, you)| { @@ -842,6 +846,10 @@ macro_rules! repeated_vec_impl { #[inline] fn compute_squared_distance(&self, other: &Self) -> Result { + // If the length of either list is zero, the least common multiple is undefined. + if cmp::min(self.len(), other.len()) < 1 { + return Err(()); + } use num_integer::lcm; let len = lcm(self.len(), other.len()); self.iter().cycle().zip(other.iter().cycle()).take(len).map(|(me, you)| { diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 2b023147b02..56b99babed7 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -545,7 +545,7 @@ pub extern "C" fn Servo_AnimationCompose(raw_value_map: RawServoAnimationValueMa }; if let Ok(value) = from_value.interpolate(to_value, position) { value_map.insert(property, value); - } else if progress < 0.5 { + } else if position < 0.5 { value_map.insert(property, from_value.clone()); } else { value_map.insert(property, to_value.clone());