Skip to content

Commit 8c4ec8c

Browse files
committed
Load: fix dependency fixup when 'before' is present
Fix transfer of 'before' dependency links from dummy service to real service during service load. A mistake in the loop logic potentially dropped some 'before' links (leaving them pointing at the dummy record, which would later become invalid) and/or bumped an iterator past-the-end.
1 parent a1dd15e commit 8c4ec8c

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/load-service.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -982,11 +982,13 @@ service_record *dirload_service_set::load_reload_service(const char *fullname,
982982
// new service
983983
auto &dep_list_prev = orig_svc->get_dependencies();
984984
auto &dep_list = rval->get_dependencies();
985-
for (auto i = dep_list_prev.begin(); i != dep_list_prev.end(); ++i) {
985+
for (auto i = dep_list_prev.begin(); i != dep_list_prev.end(); ) {
986986
if (i->dep_type == dependency_type::BEFORE) {
987987
i->set_from(rval);
988988
dep_list.splice(dep_list.end(), dep_list_prev, i++);
989-
continue;
989+
}
990+
else {
991+
++i;
990992
}
991993
}
992994

0 commit comments

Comments
 (0)