From 959ea5fb83403cba8f69149b2510ebd1338aea1a Mon Sep 17 00:00:00 2001 From: Saki Takamachi <34942839+SakiTakamachi@users.noreply.github.com> Date: Fri, 17 May 2024 08:03:34 +0900 Subject: [PATCH] Avoid unnecessary memset (#14180) Avoid unnecessary memset from `_bc_do_sub` --- ext/bcmath/libbcmath/src/add.c | 4 ++-- ext/bcmath/libbcmath/src/doaddsub.c | 4 ++-- ext/bcmath/libbcmath/src/private.h | 2 +- ext/bcmath/libbcmath/src/sub.c | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ext/bcmath/libbcmath/src/add.c b/ext/bcmath/libbcmath/src/add.c index 67fca23e5b5..12e1d64b527 100644 --- a/ext/bcmath/libbcmath/src/add.c +++ b/ext/bcmath/libbcmath/src/add.c @@ -52,7 +52,7 @@ bc_num bc_add(bc_num n1, bc_num n2, size_t scale_min) switch (_bc_do_compare(n1, n2, false)) { case -1: /* n1 is less than n2, subtract n1 from n2. */ - sum = _bc_do_sub(n2, n1, scale_min); + sum = _bc_do_sub(n2, n1); sum->n_sign = n2->n_sign; break; case 0: @@ -61,7 +61,7 @@ bc_num bc_add(bc_num n1, bc_num n2, size_t scale_min) break; case 1: /* n2 is less than n1, subtract n2 from n1. */ - sum = _bc_do_sub(n1, n2, scale_min); + sum = _bc_do_sub(n1, n2); sum->n_sign = n1->n_sign; } } diff --git a/ext/bcmath/libbcmath/src/doaddsub.c b/ext/bcmath/libbcmath/src/doaddsub.c index e6bedd57ea0..df06c15a3fa 100644 --- a/ext/bcmath/libbcmath/src/doaddsub.c +++ b/ext/bcmath/libbcmath/src/doaddsub.c @@ -169,7 +169,7 @@ bc_num _bc_do_add(bc_num n1, bc_num n2, size_t scale_min) returned. The signs of N1 and N2 are ignored. Also, N1 is assumed to be larger than N2. SCALE_MIN is the minimum scale of the result. */ -bc_num _bc_do_sub(bc_num n1, bc_num n2, size_t scale_min) +bc_num _bc_do_sub(bc_num n1, bc_num n2) { bc_num diff; /* The caller is guaranteed that n1 is always large. */ @@ -185,7 +185,7 @@ bc_num _bc_do_sub(bc_num n1, bc_num n2, size_t scale_min) char *n1ptr, *n2ptr, *diffptr; /* Allocate temporary storage. */ - diff = bc_new_num (diff_len, MAX(diff_scale, scale_min)); + diff = bc_new_num_nonzeroed(diff_len, diff_scale); /* Initialize the subtract. */ n1ptr = (char *) (n1->n_value + n1->n_len + n1->n_scale - 1); diff --git a/ext/bcmath/libbcmath/src/private.h b/ext/bcmath/libbcmath/src/private.h index 1403baad0c2..8eb84476362 100644 --- a/ext/bcmath/libbcmath/src/private.h +++ b/ext/bcmath/libbcmath/src/private.h @@ -99,5 +99,5 @@ static inline uint64_t BC_BSWAP64(uint64_t u) /* routines */ int _bc_do_compare (bc_num n1, bc_num n2, bool use_sign); bc_num _bc_do_add (bc_num n1, bc_num n2, size_t scale_min); -bc_num _bc_do_sub (bc_num n1, bc_num n2, size_t scale_min); +bc_num _bc_do_sub (bc_num n1, bc_num n2); void _bc_rm_leading_zeros (bc_num num); diff --git a/ext/bcmath/libbcmath/src/sub.c b/ext/bcmath/libbcmath/src/sub.c index 92e7ffda949..232f790317a 100644 --- a/ext/bcmath/libbcmath/src/sub.c +++ b/ext/bcmath/libbcmath/src/sub.c @@ -52,7 +52,7 @@ bc_num bc_sub(bc_num n1, bc_num n2, size_t scale_min) switch (_bc_do_compare(n1, n2, false)) { case -1: /* n1 is less than n2, subtract n1 from n2. */ - diff = _bc_do_sub(n2, n1, scale_min); + diff = _bc_do_sub(n2, n1); diff->n_sign = (n2->n_sign == PLUS ? MINUS : PLUS); break; case 0: { @@ -63,7 +63,7 @@ bc_num bc_sub(bc_num n1, bc_num n2, size_t scale_min) } case 1: /* n2 is less than n1, subtract n2 from n1. */ - diff = _bc_do_sub(n1, n2, scale_min); + diff = _bc_do_sub(n1, n2); diff->n_sign = n1->n_sign; break; }