From 4be320abc863b5b193cf4f93509971dc7b374470 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Tue, 14 Nov 2023 08:10:12 +0100 Subject: [PATCH] fix shr crash (#2158) --- src/machine/arithmetic_ops.rs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/machine/arithmetic_ops.rs b/src/machine/arithmetic_ops.rs index c3453bda..ff38c2a5 100644 --- a/src/machine/arithmetic_ops.rs +++ b/src/machine/arithmetic_ops.rs @@ -711,11 +711,8 @@ pub(crate) fn shl(n1: Number, n2: Number, arena: &mut Arena) -> Result { let n1 = Integer::from(n1.get_num()); - match (&*n2).try_into() as Result { - Ok(n2) => { - let n1: u64 = n1.try_into().unwrap(); - Ok(Number::arena_from(n1 << n2, arena)) - } + match (&*n2).try_into() as Result { + Ok(n2) => Ok(Number::arena_from(n1 << n2, arena)), _ => Ok(Number::arena_from(n1 << usize::max_value(), arena)), } } @@ -726,11 +723,8 @@ pub(crate) fn shl(n1: Number, n2: Number, arena: &mut Arena) -> Result match (&*n2).try_into() as Result { - Ok(n2) => { - let n1: u64 = (&*n1).try_into().unwrap(); - Ok(Number::arena_from(Integer::from(n1 << n2), arena)) - } + (Number::Integer(n1), Number::Integer(n2)) => match (&*n2).try_into() as Result { + Ok(n2) => Ok(Number::arena_from(Integer::from(&*n1 << n2), arena)), _ => Ok(Number::arena_from( Integer::from(&*n1 << usize::max_value()), arena, -- 2.54.0