Skip to content

Commit 22c7250

Browse files
ext/bcmath: Avoid unnecessary memset from _bc_do_add (#14257)
Apply the same changes as #14180 to _bc_do_add.
1 parent f093015 commit 22c7250

File tree

6 files changed

+8
-8
lines changed

6 files changed

+8
-8
lines changed

ext/bcmath/libbcmath/src/add.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ bc_num bc_add(bc_num n1, bc_num n2, size_t scale_min)
4444
bc_num sum = NULL;
4545

4646
if (n1->n_sign == n2->n_sign) {
47-
sum = _bc_do_add(n1, n2, scale_min);
47+
sum = _bc_do_add(n1, n2);
4848
sum->n_sign = n1->n_sign;
4949
} else {
5050
/* subtraction must be done. */

ext/bcmath/libbcmath/src/doaddsub.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
returned. The signs of N1 and N2 are ignored.
3939
SCALE_MIN is to set the minimum scale of the result. */
4040

41-
bc_num _bc_do_add(bc_num n1, bc_num n2, size_t scale_min)
41+
bc_num _bc_do_add(bc_num n1, bc_num n2)
4242
{
4343
bc_num sum;
4444
size_t sum_len = MAX(n1->n_len, n2->n_len) + 1;
@@ -51,7 +51,7 @@ bc_num _bc_do_add(bc_num n1, bc_num n2, size_t scale_min)
5151
size_t count;
5252

5353
/* Prepare sum. */
54-
sum = bc_new_num (sum_len, MAX(sum_scale, scale_min));
54+
sum = bc_new_num_nonzeroed(sum_len, sum_scale);
5555

5656
/* Start with the fraction part. Initialize the pointers. */
5757
n1ptr = (char *) (n1->n_value + n1->n_len + n1->n_scale - 1);
@@ -157,7 +157,7 @@ bc_num _bc_do_add(bc_num n1, bc_num n2, size_t scale_min)
157157
}
158158

159159
/* Set final carry. */
160-
*sumptr += carry;
160+
*sumptr = carry;
161161

162162
/* Adjust sum and return. */
163163
_bc_rm_leading_zeros(sum);

ext/bcmath/libbcmath/src/floor_or_ceil.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ bc_num bc_floor_or_ceil(bc_num num, bool is_floor)
4747
}
4848

4949
/* Increment the absolute value of the result by 1 and add sign information */
50-
bc_num tmp = _bc_do_add(result, BCG(_one_), 0);
50+
bc_num tmp = _bc_do_add(result, BCG(_one_));
5151
tmp->n_sign = result->n_sign;
5252
bc_free_num(&result);
5353
return tmp;

ext/bcmath/libbcmath/src/private.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,6 @@ static inline uint64_t BC_BSWAP64(uint64_t u)
9898

9999
/* routines */
100100
int _bc_do_compare (bc_num n1, bc_num n2, bool use_sign);
101-
bc_num _bc_do_add (bc_num n1, bc_num n2, size_t scale_min);
101+
bc_num _bc_do_add (bc_num n1, bc_num n2);
102102
bc_num _bc_do_sub (bc_num n1, bc_num n2);
103103
void _bc_rm_leading_zeros (bc_num num);

ext/bcmath/libbcmath/src/round.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ void bc_round(bc_num num, zend_long precision, zend_long mode, bc_num *result)
168168
bc_num scaled_one = bc_new_num((*result)->n_len, (*result)->n_scale);
169169
scaled_one->n_value[rounded_len - 1] = 1;
170170

171-
tmp = _bc_do_add(*result, scaled_one, (*result)->n_scale);
171+
tmp = _bc_do_add(*result, scaled_one);
172172
tmp->n_sign = (*result)->n_sign;
173173
bc_free_num(&scaled_one);
174174
}

ext/bcmath/libbcmath/src/sub.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ bc_num bc_sub(bc_num n1, bc_num n2, size_t scale_min)
4444
bc_num diff = NULL;
4545

4646
if (n1->n_sign != n2->n_sign) {
47-
diff = _bc_do_add(n1, n2, scale_min);
47+
diff = _bc_do_add(n1, n2);
4848
diff->n_sign = n1->n_sign;
4949
} else {
5050
/* subtraction must be done. */

0 commit comments

Comments
 (0)