commit a12a3ab62dd4b689378cdc974040aeb5d93df85c
parent 9c3c03f71ce0967207455e886f0eb20f845766bf
Author: Christian Grothoff <christian@grothoff.org>
Date: Fri, 9 May 2025 17:36:10 +0200
-fix another leak
Diffstat:
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;
}