chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
01184e0
)
fully clean up job dependencies on abort, too
author
Lennart Poettering
<lennart@poettering.net>
Wed, 27 Jan 2010 00:43:18 +0000
(
01:43
+0100)
committer
Lennart Poettering
<lennart@poettering.net>
Wed, 27 Jan 2010 00:43:18 +0000
(
01:43
+0100)
manager.c
patch
|
blob
|
history
diff --git
a/manager.c
b/manager.c
index 600b89ccf5af9510b339e7e3d57c883cdc1e3e4f..3430b97bc10e7851ed791e1f36f733cec801ea8d 100644
(file)
--- a/
manager.c
+++ b/
manager.c
@@
-109,6
+109,24
@@
static void transaction_delete_unit(Manager *m, Unit *u) {
transaction_delete_job(m, j);
}
transaction_delete_job(m, j);
}
+static void transaction_clean_dependencies(Manager *m) {
+ Iterator i;
+ Job *j;
+
+ assert(m);
+
+ /* Drops all dependencies of all installed jobs */
+
+ HASHMAP_FOREACH(j, m->jobs, i) {
+ while (j->subject_list)
+ job_dependency_free(j->subject_list);
+ while (j->object_list)
+ job_dependency_free(j->object_list);
+ }
+
+ assert(!m->transaction_anchor);
+}
+
static void transaction_abort(Manager *m) {
Job *j;
static void transaction_abort(Manager *m) {
Job *j;
@@
-121,7
+139,8
@@
static void transaction_abort(Manager *m) {
job_free(j);
assert(hashmap_isempty(m->transaction_jobs));
job_free(j);
assert(hashmap_isempty(m->transaction_jobs));
- assert(!m->transaction_anchor);
+
+ transaction_clean_dependencies(m);
}
static void transaction_find_jobs_that_matter_to_anchor(Manager *m, Job *j, unsigned generation) {
}
static void transaction_find_jobs_that_matter_to_anchor(Manager *m, Job *j, unsigned generation) {
@@
-539,14
+558,7
@@
static int transaction_apply(Manager *m, JobMode mode) {
}
/* As last step, kill all remaining job dependencies. */
}
/* As last step, kill all remaining job dependencies. */
- HASHMAP_FOREACH(j, m->jobs, i) {
- while (j->subject_list)
- job_dependency_free(j->subject_list);
- while (j->object_list)
- job_dependency_free(j->object_list);
- }
-
- assert(!m->transaction_anchor);
+ transaction_clean_dependencies(m);
return 0;
return 0;