From d32376ab227ffebddd8ce8682459fbc979e12749 Mon Sep 17 00:00:00 2001 From: WindOctober Date: Sun, 19 Oct 2025 09:15:17 +0000 Subject: [PATCH] Fix: issue #30. --- bitcoin-testscripts/src/bitvm/bigint/add.rs | 3 +++ bitcoin-testscripts/src/bitvm/bigint/bits.rs | 16 ++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/bitcoin-testscripts/src/bitvm/bigint/add.rs b/bitcoin-testscripts/src/bitvm/bigint/add.rs index 574642b..1b6874d 100644 --- a/bitcoin-testscripts/src/bitvm/bigint/add.rs +++ b/bitcoin-testscripts/src/bitvm/bigint/add.rs @@ -176,6 +176,9 @@ impl BigIntImpl { /// This function prevents overflow of the underlying integer types during /// left shift operation. pub fn lshift_prevent_overflow(bits: u32) -> Script { + if bits == 0 { + script! {} + } script! { // stack: {limb} { 1 << LIMB_SIZE } // {limb} {base} diff --git a/bitcoin-testscripts/src/bitvm/bigint/bits.rs b/bitcoin-testscripts/src/bitvm/bigint/bits.rs index 478a972..e90380e 100644 --- a/bitcoin-testscripts/src/bitvm/bigint/bits.rs +++ b/bitcoin-testscripts/src/bitvm/bigint/bits.rs @@ -180,13 +180,15 @@ pub fn limb_to_le_bits(num_bits: u32) -> Script { } } -pub fn limb_to_le_bits_toaltstack(num_bits: u32) -> Script { +pub fn limb_to_le_bits_toaltstack(num_bits: usize) -> Script { if num_bits >= 2 { script! { { limb_to_le_bits_common(num_bits) } - for _ in 0..num_bits { - OP_TOALTSTACK - } + for _ in 0..num_bits { OP_TOALTSTACK } + } + } else if num_bits == 1 { + script! { + OP_TOALTSTACK } } else { script! {} @@ -206,17 +208,19 @@ pub fn limb_to_be_bits(num_bits: u32) -> Script { } } -pub fn limb_to_be_bits_toaltstack(num_bits: u32) -> Script { +pub fn limb_to_be_bits_toaltstack(num_bits: usize) -> Script { if num_bits >= 2 { script! { { limb_to_be_bits_common(num_bits) } OP_TOALTSTACK OP_TOALTSTACK } - } else { + } else if num_bits == 1 { script! { OP_TOALTSTACK } + } else { + script! {} } }