Skip to content

Commit b820f6b

Browse files
committed
bsr fixes
Signed-off-by: Davide Bettio <davide@uninstall.it>
1 parent d97965a commit b820f6b

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/libAtomVM/intn.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -614,14 +614,16 @@ size_t intn_bsr(const uint32_t num[], size_t len, size_t n, uint32_t *out)
614614
size_t counted_digits = intn_count_digits(num, len);
615615
size_t ms_digit_bits = 32 - uint32_nlz(num[counted_digits - 1]);
616616
size_t effective_bits_len = (counted_digits - 1) * digit_bit_size + ms_digit_bits;
617-
size_t new_bits_len = size_round_to(effective_bits_len - n, digit_bit_size);
618617

619-
size_t new_digits_count = new_bits_len / digit_bit_size;
620-
621-
if (new_digits_count > INTN_BSL_MAX_OUT_LEN) {
622-
return new_digits_count;
618+
if (n > effective_bits_len) {
619+
out[0] = 0;
620+
return 1;
623621
}
624622

623+
///size_t new_bits_len = size_round_to(effective_bits_len - n, digit_bit_size);
624+
625+
////size_t new_digits_count = new_bits_len / digit_bit_size;
626+
625627
size_t discarded = MIN(n / digit_bit_size, len);
626628

627629
if (left_shift_n == 32) {

0 commit comments

Comments
 (0)