mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 00:47:10 +09: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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user