From 66b0e4af3560342cd1f65aefb9aabd4dc6b0498b Mon Sep 17 00:00:00 2001 From: Tomusdrw Date: Fri, 15 Jan 2016 01:48:53 +0100 Subject: [PATCH] Using overflowing operations --- src/evm/interpreter.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/evm/interpreter.rs b/src/evm/interpreter.rs index 08bca2ed8..1d81eeede 100644 --- a/src/evm/interpreter.rs +++ b/src/evm/interpreter.rs @@ -696,23 +696,27 @@ impl Interpreter { instructions::ADD => { let a = stack.pop_back(); let b = stack.pop_back(); - stack.push(a + b); + let (c, _overflow) = a.overflowing_add(a, b); + stack.push(c); }, instructions::MUL => { let a = stack.pop_back(); let b = stack.pop_back(); - stack.push(a * b); + let (c, _overflow) = a.overflowing_mul(a, b); + stack.push(c); }, instructions::SUB => { let a = stack.pop_back(); let b = stack.pop_back(); - stack.push(a - b); + let (c, _overflow) = a.overflowing_sub(a, b); + stack.push(c); }, instructions::DIV => { let a = stack.pop_back(); let b = stack.pop_back(); stack.push(if !self.is_zero(&b) { - a / b + let (c, _overflow) = a.overflowing_div(a, b); + c } else { U256::zero() }); @@ -721,7 +725,8 @@ impl Interpreter { let a = stack.pop_back(); let b = stack.pop_back(); stack.push(if !self.is_zero(&b) { - a % b + let (c, _overflow) = a.overflowing_rem(a, b); + c } else { U256::zero() });