]> Repositorios git - scryer-prolog.git/commitdiff
fix shr crash (#2158)
authorMark Thom <[email protected]>
Tue, 14 Nov 2023 07:10:12 +0000 (08:10 +0100)
committerMark Thom <[email protected]>
Tue, 14 Nov 2023 07:15:19 +0000 (08:15 +0100)
src/machine/arithmetic_ops.rs

index c3453bda4b1c9d7585a3540b2bef2eedbd64dcef..ff38c2a54b4feb20667ce11a85ddc1f5604fe240 100644 (file)
@@ -711,11 +711,8 @@ pub(crate) fn shl(n1: Number, n2: Number, arena: &mut Arena) -> Result<Number, M
         (Number::Fixnum(n1), Number::Integer(n2)) => {
             let n1 = Integer::from(n1.get_num());
 
-            match (&*n2).try_into() as Result<u32, _> {
-                Ok(n2) => {
-                    let n1: u64 = n1.try_into().unwrap();
-                    Ok(Number::arena_from(n1 << n2, arena))
-                }
+            match (&*n2).try_into() as Result<usize, _> {
+                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<Number, M
                 arena,
             )),
         },
-        (Number::Integer(n1), Number::Integer(n2)) => match (&*n2).try_into() as Result<u32, _> {
-            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<usize, _> {
+            Ok(n2) => Ok(Number::arena_from(Integer::from(&*n1 << n2), arena)),
             _ => Ok(Number::arena_from(
                 Integer::from(&*n1 << usize::max_value()),
                 arena,