Skip to content

Commit ce78b14

Browse files
committed
Calculate min_len + min_scale first
1 parent 6a29fb7 commit ce78b14

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

ext/bcmath/libbcmath/src/doaddsub.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ bc_num _bc_do_sub(bc_num n1, bc_num n2, size_t scale_min)
128128
size_t diff_scale = MAX(n1->n_scale, n2->n_scale);
129129
size_t min_len = n1->n_len >= n2->n_len ? n2->n_len : n1->n_len;
130130
size_t min_scale = MIN(n1->n_scale, n2->n_scale);
131+
size_t min_bytes = min_len + min_scale;
131132
size_t borrow = 0;
132133
size_t count;
133134
int val;
@@ -163,11 +164,11 @@ bc_num _bc_do_sub(bc_num n1, bc_num n2, size_t scale_min)
163164

164165
/* Now do the equal length scale and integer parts. */
165166
count = 0;
166-
if (min_len + min_scale >= sizeof(BC_UINT_T)) {
167+
if (min_bytes >= sizeof(BC_UINT_T)) {
167168
diffptr++;
168169
n1ptr++;
169170
n2ptr++;
170-
while (count + sizeof(BC_UINT_T) <= min_len + min_scale) {
171+
while (count + sizeof(BC_UINT_T) <= min_bytes) {
171172
diffptr -= sizeof(BC_UINT_T);
172173
n1ptr -= sizeof(BC_UINT_T);
173174
n2ptr -= sizeof(BC_UINT_T);
@@ -212,7 +213,7 @@ bc_num _bc_do_sub(bc_num n1, bc_num n2, size_t scale_min)
212213
n2ptr--;
213214
}
214215

215-
for (; count < min_len + min_scale; count++) {
216+
for (; count < min_bytes; count++) {
216217
val = *n1ptr-- - *n2ptr-- - borrow;
217218
if (val < 0) {
218219
val += BASE;

0 commit comments

Comments
 (0)