Fix bugs in add found through tests
diff --git a/src/bc/num.c b/src/bc/num.c
index 1555046..952924c 100644
--- a/src/bc/num.c
+++ b/src/bc/num.c
@@ -553,6 +553,7 @@
char* ptr_b;
char* ptr_c;
size_t i;
+ size_t max;
size_t min;
size_t diff;
size_t a_whole;
@@ -636,27 +637,25 @@
}
}
+ if (carry) ptr_c[i] = carry;
+
if (a_whole > b_whole) {
-
- for (; i < a_whole; ++i) {
-
- ptr_c[i] = ptr_a[i] + carry;
- ++c->len;
-
- carry = 0;
- }
+ max = a_whole;
+ ptr = ptr_a;
}
else {
-
- for (; i < b_whole; ++i) {
-
- ptr_c[i] = ptr_b[i] + carry;
- ++c->len;
-
- carry = 0;
- }
+ max = b_whole;
+ ptr = ptr_b;
}
+ for (; i < max; ++i) {
+ ptr_c[i] += ptr[i];
+ ++c->len;
+ carry = 0;
+ }
+
+ if (carry) ++c->len;
+
return BC_STATUS_SUCCESS;
}