mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-11-24 07:20:56 +07:00
fix memleak
This commit is contained in:
parent
21b293e813
commit
302d0040d2
2
job.c
2
job.c
@ -37,7 +37,7 @@ void job_free(Job *j) {
|
||||
hashmap_remove(j->manager->jobs, UINT32_TO_PTR(j->id));
|
||||
}
|
||||
|
||||
manager_transaction_delete_job(j->manager, j);
|
||||
manager_transaction_unlink_job(j->manager, j);
|
||||
|
||||
free(j);
|
||||
}
|
||||
|
24
manager.c
24
manager.c
@ -51,6 +51,16 @@ void manager_free(Manager *m) {
|
||||
free(m);
|
||||
}
|
||||
|
||||
static void transaction_delete_job(Manager *m, Job *j) {
|
||||
assert(m);
|
||||
assert(j);
|
||||
|
||||
manager_transaction_unlink_job(m, j);
|
||||
|
||||
if (!j->linked)
|
||||
job_free(j);
|
||||
}
|
||||
|
||||
static void transaction_abort(Manager *m) {
|
||||
Job *j;
|
||||
|
||||
@ -58,7 +68,7 @@ static void transaction_abort(Manager *m) {
|
||||
|
||||
while ((j = hashmap_first(m->transaction_jobs)))
|
||||
if (j->linked)
|
||||
manager_transaction_delete_job(m, j);
|
||||
transaction_delete_job(m, j);
|
||||
else
|
||||
job_free(j);
|
||||
|
||||
@ -170,7 +180,7 @@ static void transaction_merge_and_delete_job(Manager *m, Job *j, Job *other, Job
|
||||
/* Kill the other job */
|
||||
other->subject_list = NULL;
|
||||
other->object_list = NULL;
|
||||
manager_transaction_delete_job(m, other);
|
||||
transaction_delete_job(m, other);
|
||||
}
|
||||
|
||||
static int transaction_merge_jobs(Manager *m) {
|
||||
@ -222,7 +232,7 @@ static int transaction_verify_order_one(Manager *m, Job *j, Job *from, unsigned
|
||||
for (k = from; k; k = (k->generation == generation ? k->marker : NULL)) {
|
||||
if (!k->matters_to_anchor) {
|
||||
log_debug("Breaking order cycle by deleting job %s", name_id(k->name));
|
||||
manager_transaction_delete_job(m, k);
|
||||
transaction_delete_job(m, k);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
@ -305,7 +315,7 @@ static void transaction_collect_garbage(Manager *m) {
|
||||
if (j->object_list)
|
||||
continue;
|
||||
|
||||
manager_transaction_delete_job(m, j);
|
||||
transaction_delete_job(m, j);
|
||||
again = true;
|
||||
break;
|
||||
}
|
||||
@ -469,7 +479,7 @@ static Job* transaction_add_one_job(Manager *m, JobType type, Name *name, bool *
|
||||
return j;
|
||||
}
|
||||
|
||||
void manager_transaction_delete_job(Manager *m, Job *j) {
|
||||
void manager_transaction_unlink_job(Manager *m, Job *j) {
|
||||
assert(m);
|
||||
assert(j);
|
||||
|
||||
@ -494,8 +504,8 @@ void manager_transaction_delete_job(Manager *m, Job *j) {
|
||||
job_dependency_free(j->object_list);
|
||||
|
||||
if (other) {
|
||||
log_debug("Deleting job %s, as dependency of job %s", name_id(j->name), name_id(other->name));
|
||||
manager_transaction_delete_job(m, other);
|
||||
log_debug("Deleting job %s dependency of job %s", name_id(other->name), name_id(j->name));
|
||||
transaction_delete_job(m, other);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ int manager_add_job(Manager *m, JobType type, Name *name, JobMode mode, bool for
|
||||
void manager_dump_names(Manager *s, FILE *f, const char *prefix);
|
||||
void manager_dump_jobs(Manager *s, FILE *f, const char *prefix);
|
||||
|
||||
void manager_transaction_delete_job(Manager *m, Job *j);
|
||||
void manager_transaction_unlink_job(Manager *m, Job *j);
|
||||
|
||||
void manager_clear_jobs(Manager *m);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user