From 843d2a9b5f63e3ed21c6e27cea0db52998c466ec Mon Sep 17 00:00:00 2001 From: Saki Takamachi <34942839+SakiTakamachi@users.noreply.github.com> Date: Sat, 15 Mar 2025 08:41:14 +0900 Subject: [PATCH] ext/bcmath: `bc_divide()` small fix (#18060) --- ext/bcmath/libbcmath/src/div.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/ext/bcmath/libbcmath/src/div.c b/ext/bcmath/libbcmath/src/div.c index ec7619fb770..ca073a155c7 100644 --- a/ext/bcmath/libbcmath/src/div.c +++ b/ext/bcmath/libbcmath/src/div.c @@ -370,12 +370,11 @@ bool bc_divide(bc_num numerator, bc_num divisor, bc_num *quot, size_t scale) while (*numeratorptr == 0) { numeratorptr++; numerator_leading_zeros++; + if (numerator_leading_zeros == numerator_size) { + goto quot_zero; + } } - if (numerator_size > numerator_leading_zeros) { - numerator_size -= numerator_leading_zeros; - } else { - goto quot_zero; - } + numerator_size -= numerator_leading_zeros; /* check and remove divisor leading zeros */ while (*divisorptr == 0) { @@ -396,12 +395,7 @@ bool bc_divide(bc_num numerator, bc_num divisor, bc_num *quot, size_t scale) divisor_trailing_zeros++; } divisor_size -= divisor_trailing_zeros; - - if (numerator_size > divisor_trailing_zeros) { - numerator_size -= divisor_trailing_zeros; - } else { - goto quot_zero; - } + numerator_size -= divisor_trailing_zeros; size_t quot_size = numerator_size - divisor_size + 1; /* numerator_size >= divisor_size */ if (quot_size > quot_scale) {