fix invariant check

This commit is contained in:
Christian Grothoff 2020-04-24 00:52:33 +02:00
parent de61e06eb1
commit 6772037321
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 10 additions and 8 deletions

View File

@ -42,13 +42,13 @@ TALER_EXCHANGEDB_calculate_transaction_list_totals (
struct TALER_Amount refunded; struct TALER_Amount refunded;
struct TALER_Amount deposit_fee; struct TALER_Amount deposit_fee;
bool have_refund; bool have_refund;
bool have_deposit; bool have_deposit_or_melt;
GNUNET_assert (GNUNET_OK == GNUNET_assert (GNUNET_OK ==
TALER_amount_get_zero (spent.currency, TALER_amount_get_zero (spent.currency,
&refunded)); &refunded));
have_refund = false; have_refund = false;
have_deposit = false; have_deposit_or_melt = false;
for (struct TALER_EXCHANGEDB_TransactionList *pos = tl; for (struct TALER_EXCHANGEDB_TransactionList *pos = tl;
NULL != pos; NULL != pos;
pos = pos->next) pos = pos->next)
@ -57,7 +57,7 @@ TALER_EXCHANGEDB_calculate_transaction_list_totals (
{ {
case TALER_EXCHANGEDB_TT_DEPOSIT: case TALER_EXCHANGEDB_TT_DEPOSIT:
/* spent += pos->amount_with_fee */ /* spent += pos->amount_with_fee */
have_deposit = true; have_deposit_or_melt = true;
if (0 > if (0 >
TALER_amount_add (&spent, TALER_amount_add (&spent,
&spent, &spent,
@ -70,6 +70,7 @@ TALER_EXCHANGEDB_calculate_transaction_list_totals (
break; break;
case TALER_EXCHANGEDB_TT_MELT: case TALER_EXCHANGEDB_TT_MELT:
/* spent += pos->amount_with_fee */ /* spent += pos->amount_with_fee */
have_deposit_or_melt = true;
if (0 > if (0 >
TALER_amount_add (&spent, TALER_amount_add (&spent,
&spent, &spent,
@ -155,7 +156,7 @@ TALER_EXCHANGEDB_calculate_transaction_list_totals (
GNUNET_break (0); GNUNET_break (0);
return GNUNET_SYSERR; return GNUNET_SYSERR;
} }
GNUNET_break (have_deposit); GNUNET_break (have_deposit_or_melt);
*ret = spent; *ret = spent;
return GNUNET_OK; return GNUNET_OK;
} }

View File

@ -4006,9 +4006,9 @@ struct CoinHistoryContext
bool failed; bool failed;
/** /**
* Set to 'true' if we found a deposit (for invariant check). * Set to 'true' if we found a deposit or melt (for invariant check).
*/ */
bool have_deposit; bool have_deposit_or_melt;
}; };
@ -4034,7 +4034,7 @@ add_coin_deposit (void *cls,
struct TALER_EXCHANGEDB_TransactionList *tl; struct TALER_EXCHANGEDB_TransactionList *tl;
uint64_t serial_id; uint64_t serial_id;
chc->have_deposit = true; chc->have_deposit_or_melt = true;
deposit = GNUNET_new (struct TALER_EXCHANGEDB_DepositListEntry); deposit = GNUNET_new (struct TALER_EXCHANGEDB_DepositListEntry);
{ {
struct GNUNET_PQ_ResultSpec rs[] = { struct GNUNET_PQ_ResultSpec rs[] = {
@ -4106,6 +4106,7 @@ add_coin_melt (void *cls,
struct TALER_EXCHANGEDB_TransactionList *tl; struct TALER_EXCHANGEDB_TransactionList *tl;
uint64_t serial_id; uint64_t serial_id;
chc->have_deposit_or_melt = true;
melt = GNUNET_new (struct TALER_EXCHANGEDB_MeltListEntry); melt = GNUNET_new (struct TALER_EXCHANGEDB_MeltListEntry);
{ {
struct GNUNET_PQ_ResultSpec rs[] = { struct GNUNET_PQ_ResultSpec rs[] = {
@ -4512,7 +4513,7 @@ postgres_get_coin_transactions (
*tlp = chc.head; *tlp = chc.head;
if (NULL == chc.head) if (NULL == chc.head)
return GNUNET_DB_STATUS_SUCCESS_NO_RESULTS; return GNUNET_DB_STATUS_SUCCESS_NO_RESULTS;
GNUNET_break (chc.have_deposit); GNUNET_break (chc.have_deposit_or_melt);
return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT; return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;
} }