bignum.cpp: Fix regression in bignum conversion. Fixes #1072.
parent
a6e0867b22
commit
2834bc90f8
|
@ -344,13 +344,18 @@ bignum* factor_vm::bignum_remainder(bignum* numerator, bignum* denominator) {
|
||||||
*scan = (accumulator & BIGNUM_DIGIT_MASK); \
|
*scan = (accumulator & BIGNUM_DIGIT_MASK); \
|
||||||
return (result); \
|
return (result); \
|
||||||
} else { \
|
} else { \
|
||||||
BIGNUM_ASSERT(BIGNUM_DIGITS_FOR(type) == 2); \
|
bignum_digit_type result_digits[BIGNUM_DIGITS_FOR(type)]; \
|
||||||
bignum* result = allot_bignum(2, negative_p); \
|
bignum_digit_type* end_digits = result_digits; \
|
||||||
bignum_digit_type* scan = (BIGNUM_START_PTR(result)); \
|
do { \
|
||||||
(*scan++) = (accumulator & BIGNUM_DIGIT_MASK); \
|
(*end_digits++) = (accumulator & BIGNUM_DIGIT_MASK); \
|
||||||
accumulator >>= BIGNUM_DIGIT_LENGTH; \
|
accumulator >>= BIGNUM_DIGIT_LENGTH; \
|
||||||
*scan = (accumulator & BIGNUM_DIGIT_MASK); \
|
} while (accumulator != 0); \
|
||||||
BIGNUM_ASSERT((accumulator >> BIGNUM_DIGIT_LENGTH) == 0); \
|
bignum* result = \
|
||||||
|
(allot_bignum((end_digits - result_digits), negative_p)); \
|
||||||
|
bignum_digit_type* scan_digits = result_digits; \
|
||||||
|
bignum_digit_type* scan_result = (BIGNUM_START_PTR(result)); \
|
||||||
|
while (scan_digits < end_digits) \
|
||||||
|
(*scan_result++) = (*scan_digits++); \
|
||||||
return (result); \
|
return (result); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
|
Loading…
Reference in New Issue