X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=job.c;h=5e250d58f0ca0b9caca6c1aaaf7b3de8c07394ec;hp=c4d2e7a11e5c7a531a5e086abd9985568725a2c7;hb=aab14b13b491c08aa3ab0c3c59b2f3885692ffea;hpb=593fbdd21e52c8c0ac249c5b6163761005af8463 diff --git a/job.c b/job.c index c4d2e7a11..5e250d58f 100644 --- a/job.c +++ b/job.c @@ -65,7 +65,7 @@ void job_free(Job *j) { } /* Detach from next 'smaller' objects */ - manager_transaction_unlink_job(j->manager, j); + manager_transaction_unlink_job(j->manager, j, true); if (j->in_run_queue) LIST_REMOVE(Job, run_queue, j->manager->run_queue, j); @@ -485,26 +485,26 @@ int job_finish_and_invalidate(Job *j, bool success) { SET_FOREACH(other, u->meta.dependencies[UNIT_REQUIRED_BY], i) if (other->meta.job && - (other->meta.type == JOB_START || - other->meta.type == JOB_VERIFY_ACTIVE || - other->meta.type == JOB_RELOAD_OR_START)) + (other->meta.job->type == JOB_START || + other->meta.job->type == JOB_VERIFY_ACTIVE || + other->meta.job->type == JOB_RELOAD_OR_START)) job_finish_and_invalidate(other->meta.job, false); SET_FOREACH(other, u->meta.dependencies[UNIT_SOFT_REQUIRED_BY], i) if (other->meta.job && !other->meta.job->forced && - (other->meta.type == JOB_START || - other->meta.type == JOB_VERIFY_ACTIVE || - other->meta.type == JOB_RELOAD_OR_START)) + (other->meta.job->type == JOB_START || + other->meta.job->type == JOB_VERIFY_ACTIVE || + other->meta.job->type == JOB_RELOAD_OR_START)) job_finish_and_invalidate(other->meta.job, false); } else if (t == JOB_STOP) { SET_FOREACH(other, u->meta.dependencies[UNIT_CONFLICTS], i) if (other->meta.job && - (t == JOB_START || - t == JOB_VERIFY_ACTIVE || - t == JOB_RELOAD_OR_START)) + (other->meta.job->type == JOB_START || + other->meta.job->type == JOB_VERIFY_ACTIVE || + other->meta.job->type == JOB_RELOAD_OR_START)) job_finish_and_invalidate(other->meta.job, false); } }