From 89fee4c5808e85bce280d2735cae3b50ef512736 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Mon, 26 Aug 2019 23:54:09 +0200 Subject: [PATCH] Ints are signed in avm1 --- src/avm1/read.rs | 2 +- src/avm1/types.rs | 2 +- src/avm1/write.rs | 2 +- src/test_data.rs | 5 +++++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/avm1/read.rs b/src/avm1/read.rs index dd5c6aa39..614c5a24e 100644 --- a/src/avm1/read.rs +++ b/src/avm1/read.rs @@ -236,7 +236,7 @@ impl Reader { 4 => Value::Register(self.read_u8()?), 5 => Value::Bool(self.read_u8()? != 0), 6 => Value::Double(self.read_f64()?), - 7 => Value::Int(self.read_u32()?), + 7 => Value::Int(self.read_i32()?), 8 => Value::ConstantPool(self.read_u8()?.into()), 9 => Value::ConstantPool(self.read_u16()?), _ => { diff --git a/src/avm1/types.rs b/src/avm1/types.rs index 806232978..1c81535f3 100644 --- a/src/avm1/types.rs +++ b/src/avm1/types.rs @@ -135,7 +135,7 @@ pub enum Value { Undefined, Null, Bool(bool), - Int(u32), + Int(i32), Float(f32), Double(f64), Str(String), diff --git a/src/avm1/write.rs b/src/avm1/write.rs index 41534b708..f69551dd5 100644 --- a/src/avm1/write.rs +++ b/src/avm1/write.rs @@ -407,7 +407,7 @@ impl Writer { } Value::Int(v) => { self.write_u8(7)?; - self.write_u32(v)?; + self.write_i32(v)?; } Value::ConstantPool(v) => { if v < 256 { diff --git a/src/test_data.rs b/src/test_data.rs index b9a3b69b8..0a307be18 100644 --- a/src/test_data.rs +++ b/src/test_data.rs @@ -2438,6 +2438,11 @@ pub fn avm1_tests() -> Vec { Action::Push(vec![Value::Int(31)]), vec![0x96, 5, 0, 7, 31, 0, 0, 0], ), + ( + 5, + Action::Push(vec![Value::Int(-50)]), + vec![0x96, 5, 0, 7, 206, 255, 255, 255], + ), ( 5, Action::Push(vec![Value::ConstantPool(77)]),