From c49dfd8911f49bf383ad7ac1d18be8a4ab39ab09 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 26 Apr 2023 13:59:34 +0900 Subject: [PATCH] core/transaction: use hashmap_remove_value() to make not remove job with same ID When we fail to deserialize job ID, or the current_job_id is overflowed, we may have jobs with the same ID. This is paranoia, and just for safety. Note, we already use hashmap_remove_value() in job_uninstall(). --- src/core/transaction.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/transaction.c b/src/core/transaction.c index 059558ebc0a..cd0c28123f2 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -662,7 +662,7 @@ static int transaction_apply( /* j has been merged into a previously installed job */ if (tr->anchor_job == j) tr->anchor_job = installed_job; - hashmap_remove(m->jobs, UINT32_TO_PTR(j->id)); + hashmap_remove_value(m->jobs, UINT32_TO_PTR(j->id), j); job_free(j); j = installed_job; } @@ -683,7 +683,7 @@ static int transaction_apply( rollback: HASHMAP_FOREACH(j, tr->jobs) - hashmap_remove(m->jobs, UINT32_TO_PTR(j->id)); + hashmap_remove_value(m->jobs, UINT32_TO_PTR(j->id), j); return r; } -- 2.47.3