diff --git a/core/src/avm1/value.rs b/core/src/avm1/value.rs index 34cd858bbf9d..d0fc7e5625f3 100644 --- a/core/src/avm1/value.rs +++ b/core/src/avm1/value.rs @@ -623,10 +623,8 @@ pub fn f64_to_string(n: f64) -> String { pub fn f64_to_wrapping_u16(n: f64) -> u16 { if !n.is_finite() { 0 - } else if n >= 0.0 { - (n % 65536.0) as u16 } else { - ((n.trunc() % 65536.0) + 65536.0) as u16 + n.trunc().rem_euclid(65536.0) as u16 } } @@ -642,10 +640,8 @@ pub fn f64_to_wrapping_i16(n: f64) -> i16 { pub fn f64_to_wrapping_u32(n: f64) -> u32 { if !n.is_finite() { 0 - } else if n >= 0.0 { - (n % 4294967296.0) as u32 } else { - ((n.trunc() % 4294967296.0) + 4294967296.0) as u32 + n.trunc().rem_euclid(4294967296.0) as u32 } } diff --git a/swf/src/write.rs b/swf/src/write.rs index bd81bfd90fa7..d31f74f6d2e9 100644 --- a/swf/src/write.rs +++ b/swf/src/write.rs @@ -303,7 +303,7 @@ impl Writer { } fn write_fbits(&mut self, num_bits: u8, n: f32) -> Result<()> { - self.write_ubits(num_bits, (n * 65536f32) as u32) + self.write_sbits(num_bits, (n * 65536f32) as i32) } fn write_encoded_u32(&mut self, mut n: u32) -> Result<()> {