Skip to content

ext/bcmath: Avoid unnecessary memset from _bc_do_add #14257

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ext/bcmath/libbcmath/src/add.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ bc_num bc_add(bc_num n1, bc_num n2, size_t scale_min)
bc_num sum = NULL;

if (n1->n_sign == n2->n_sign) {
sum = _bc_do_add(n1, n2, scale_min);
sum = _bc_do_add(n1, n2);
sum->n_sign = n1->n_sign;
} else {
/* subtraction must be done. */
Expand Down
6 changes: 3 additions & 3 deletions ext/bcmath/libbcmath/src/doaddsub.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
returned. The signs of N1 and N2 are ignored.
SCALE_MIN is to set the minimum scale of the result. */

bc_num _bc_do_add(bc_num n1, bc_num n2, size_t scale_min)
bc_num _bc_do_add(bc_num n1, bc_num n2)
{
bc_num sum;
size_t sum_len = MAX(n1->n_len, n2->n_len) + 1;
Expand All @@ -51,7 +51,7 @@ bc_num _bc_do_add(bc_num n1, bc_num n2, size_t scale_min)
size_t count;

/* Prepare sum. */
sum = bc_new_num (sum_len, MAX(sum_scale, scale_min));
sum = bc_new_num_nonzeroed(sum_len, sum_scale);

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

/* Set final carry. */
*sumptr += carry;
*sumptr = carry;

/* Adjust sum and return. */
_bc_rm_leading_zeros(sum);
Expand Down
2 changes: 1 addition & 1 deletion ext/bcmath/libbcmath/src/floor_or_ceil.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ bc_num bc_floor_or_ceil(bc_num num, bool is_floor)
}

/* Increment the absolute value of the result by 1 and add sign information */
bc_num tmp = _bc_do_add(result, BCG(_one_), 0);
bc_num tmp = _bc_do_add(result, BCG(_one_));
tmp->n_sign = result->n_sign;
bc_free_num(&result);
return tmp;
Expand Down
2 changes: 1 addition & 1 deletion ext/bcmath/libbcmath/src/private.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,6 @@ 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_add (bc_num n1, bc_num n2);
bc_num _bc_do_sub (bc_num n1, bc_num n2);
void _bc_rm_leading_zeros (bc_num num);
2 changes: 1 addition & 1 deletion ext/bcmath/libbcmath/src/round.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ void bc_round(bc_num num, zend_long precision, zend_long mode, bc_num *result)
bc_num scaled_one = bc_new_num((*result)->n_len, (*result)->n_scale);
scaled_one->n_value[rounded_len - 1] = 1;

tmp = _bc_do_add(*result, scaled_one, (*result)->n_scale);
tmp = _bc_do_add(*result, scaled_one);
tmp->n_sign = (*result)->n_sign;
bc_free_num(&scaled_one);
}
Expand Down
2 changes: 1 addition & 1 deletion ext/bcmath/libbcmath/src/sub.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ bc_num bc_sub(bc_num n1, bc_num n2, size_t scale_min)
bc_num diff = NULL;

if (n1->n_sign != n2->n_sign) {
diff = _bc_do_add(n1, n2, scale_min);
diff = _bc_do_add(n1, n2);
diff->n_sign = n1->n_sign;
} else {
/* subtraction must be done. */
Expand Down
Loading