diff --git a/src/test/feefrac_tests.cpp b/src/test/feefrac_tests.cpp index 8da79c20718..ff95fc9efb8 100644 --- a/src/test/feefrac_tests.cpp +++ b/src/test/feefrac_tests.cpp @@ -148,6 +148,8 @@ BOOST_AUTO_TEST_CASE(feefrac_operators) FeeFrac max_fee2{1, 1}; BOOST_CHECK(max_fee >= max_fee2); + // Test for integer overflow issue (https://github.com/bitcoin/bitcoin/issues/32294) + BOOST_CHECK_EQUAL((FeeFrac{0x7ffffffdfffffffb, 0x7ffffffd}.EvaluateFeeDown(0x7fffffff)), 0x7fffffffffffffff); } BOOST_AUTO_TEST_SUITE_END() diff --git a/src/util/feefrac.h b/src/util/feefrac.h index 189fcaeae29..c29dabc43b4 100644 --- a/src/util/feefrac.h +++ b/src/util/feefrac.h @@ -96,7 +96,7 @@ struct FeeFrac int64_t quot = n / d; int32_t mod = n % d; // Correct result if the / operator above rounded in the wrong direction. - return quot + (mod > 0) - (mod && round_down); + return quot + ((mod > 0) - (mod && round_down)); } #else static constexpr auto Mul = MulFallback;