From: Emilie Burgun Date: Mon, 20 Jan 2025 10:10:16 +0000 (+0100) Subject: Fix `X is gcd(1, 2 ^ 64)` triggering a panic X-Git-Tag: v0.10.0~77^2~3 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=e2d1a2b6bc9943aec76fcc085beec0600c33313e;p=scryer-prolog.git Fix `X is gcd(1, 2 ^ 64)` triggering a panic The implementation for gcd/2 would cast the second argument to an isize. --- diff --git a/src/machine/arithmetic_ops.rs b/src/machine/arithmetic_ops.rs index 2d1bdc65..3cd1d9d8 100644 --- a/src/machine/arithmetic_ops.rs +++ b/src/machine/arithmetic_ops.rs @@ -947,8 +947,7 @@ pub(crate) fn gcd(n1: Number, n2: Number, arena: &mut Arena) -> Result { - let n2: isize = (&*n2).try_into().unwrap(); - let value: Integer = (&*n1).gcd(&Integer::from(n2)).into(); + let value: Integer = (&*n1).gcd(&*n2).into(); Ok(Number::arena_from(value, arena)) } (Number::Float(f), _) | (_, Number::Float(f)) => {