From: Lennart Poettering Date: Mon, 27 Sep 2010 18:31:23 +0000 (+0200) Subject: load-fragment: reset fragment_path if we couldn't find a unit file for it X-Git-Tag: v11~65 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=6ccb1b44295edfbd4f7bc0211fe55ad765ef2af3;p=elogind.git load-fragment: reset fragment_path if we couldn't find a unit file for it --- diff --git a/fixme b/fixme index 89e279bc8..ec69ec526 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 74114c43b..4395fb280 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;