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().
This commit is contained in:
Yu Watanabe 2023-04-26 13:59:34 +09:00
parent fa84c1ce00
commit c49dfd8911

View file

@ -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;
}