mirror of
https://github.com/systemd/systemd
synced 2024-10-15 12:34:37 +00:00
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:
parent
fa84c1ce00
commit
c49dfd8911
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue