exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit a12a3ab62dd4b689378cdc974040aeb5d93df85c
parent 9c3c03f71ce0967207455e886f0eb20f845766bf
Author: Christian Grothoff <christian@grothoff.org>
Date:   Fri,  9 May 2025 17:36:10 +0200

-fix another leak

Diffstat:
Msrc/auditor/taler-helper-auditor-reserves.c | 24++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/auditor/taler-helper-auditor-reserves.c b/src/auditor/taler-helper-auditor-reserves.c @@ -1763,15 +1763,17 @@ verify_reserve_balance (void *cls, #define CHECK_DB() do { \ if (qs < 0) { \ GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs); \ - return qs; \ + goto cleanup; \ } \ if (global_qs < 0) { \ GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == global_qs); \ - return global_qs; \ + qs = global_qs; \ + goto cleanup; \ } \ if (rc.qs < 0) { \ GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == rc.qs); \ - return rc.qs; \ + qs = rc.qs; \ + goto cleanup; \ } \ } while (0) @@ -1921,8 +1923,6 @@ analyze_reserves (void *cls) CHECK_DB (); GNUNET_break (0 == GNUNET_CONTAINER_multihashmap_size (rc.reserves)); - GNUNET_CONTAINER_multihashmap_destroy (rc.reserves); - GNUNET_CONTAINER_multihashmap_destroy (rc.revoked); qs = TALER_ARL_adb->insert_balance ( TALER_ARL_adb->cls, @@ -1943,7 +1943,7 @@ analyze_reserves (void *cls) if (0 > qs) { GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs); - return qs; + goto cleanup; } qs = TALER_ARL_adb->update_balance ( @@ -1965,7 +1965,7 @@ analyze_reserves (void *cls) if (0 > qs) { GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs); - return qs; + goto cleanup; } qs = TALER_ARL_adb->insert_auditor_progress ( @@ -1984,7 +1984,7 @@ analyze_reserves (void *cls) GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Failed to update auditor DB, not recording progress\n"); GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs); - return qs; + goto cleanup; } qs = TALER_ARL_adb->update_auditor_progress ( TALER_ARL_adb->cls, @@ -2002,7 +2002,7 @@ analyze_reserves (void *cls) GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Failed to update auditor DB, not recording progress\n"); GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs); - return qs; + goto cleanup; } GNUNET_log (GNUNET_ERROR_TYPE_INFO, @@ -2023,7 +2023,11 @@ analyze_reserves (void *cls) reserves_account_merges_serial_id), (unsigned long long) TALER_ARL_USE_PP ( reserves_history_requests_serial_id)); - return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT; + qs = GNUNET_DB_STATUS_SUCCESS_ONE_RESULT; +cleanup: + GNUNET_CONTAINER_multihashmap_destroy (rc.reserves); + GNUNET_CONTAINER_multihashmap_destroy (rc.revoked); + return qs; }