Merge pull request #3124 from SparkiDev/sp_add_d

Fix sp_add_d
pull/3142/head
toddouska 2020-07-16 10:56:28 -07:00 committed by GitHub
commit 859a1eebe4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 8 deletions

View File

@ -1003,26 +1003,31 @@ void sp_zero(sp_int* a)
int sp_add_d(sp_int* a, sp_int_digit d, sp_int* r)
{
int i = 0;
sp_int_digit t;
r->used = a->used;
if (a->used == 0) {
r->used = 1;
r->used = d > 0;
}
r->dp[0] = a->dp[0] + d;
if (r->dp[i] < a->dp[i]) {
for (; i < a->used; i++) {
t = a->dp[0] + d;
if (t < a->dp[0]) {
for (++i; i < a->used; i++) {
r->dp[i] = a->dp[i] + 1;
if (r->dp[i] != 0)
if (r->dp[i] != 0) {
break;
}
}
if (i == a->used) {
r->used++;
r->dp[i] = 1;
}
}
for (; i < a->used; i++)
r->dp[i] = a->dp[i];
r->dp[0] = t;
if (r != a) {
for (++i; i < a->used; i++) {
r->dp[i] = a->dp[i];
}
}
return MP_OKAY;
}