summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-09-27 20:31:23 +0200
committerLennart Poettering <lennart@poettering.net>2010-09-27 20:31:57 +0200
commit6ccb1b44295edfbd4f7bc0211fe55ad765ef2af3 (patch)
tree344b4d6556f6f89658f943b71c85890ac31a5593
parent2e7485f021e7771ba802ce2d5188a88baa63fe0e (diff)
load-fragment: reset fragment_path if we couldn't find a unit file for it
-rw-r--r--fixme2
-rw-r--r--src/load-fragment.c12
2 files changed, 11 insertions, 3 deletions
diff --git a/fixme b/fixme
index 89e279bc85..ec69ec526f 100644
--- a/fixme
+++ b/fixme
@@ -109,8 +109,6 @@
* (null) dependency bug
-* f21781d57f7e012c1d576dfd8c30b411014c5a88
-
* d /var/run/screen 0755 root utmp
External:
diff --git a/src/load-fragment.c b/src/load-fragment.c
index 74114c43b8..4395fb280c 100644
--- a/src/load-fragment.c
+++ b/src/load-fragment.c
@@ -1846,10 +1846,20 @@ int unit_load_fragment(Unit *u) {
}
/* And now, try looking for it under the suggested (originally linked) path */
- if (u->meta.load_state == UNIT_STUB && u->meta.fragment_path)
+ if (u->meta.load_state == UNIT_STUB && u->meta.fragment_path) {
+
if ((r = load_from_path(u, u->meta.fragment_path)) < 0)
return r;
+ if (u->meta.load_state == UNIT_STUB) {
+ /* Hmm, this didn't work? Then let's get rid
+ * of the fragment path stored for us, so that
+ * we don't point to an invalid location. */
+ free(u->meta.fragment_path);
+ u->meta.fragment_path = NULL;
+ }
+ }
+
/* Look for a template */
if (u->meta.load_state == UNIT_STUB && u->meta.instance) {
char *k;