}
if (si == parent) {
- DL_ERR("recursive link to \"%s\"", si->name);
return true;
}
- return !parent->get_parents().visit([&](soinfo* grandparent) {
- return !is_recursive(si, grandparent);
+ return !si->get_children().visit([&](soinfo* child) {
+ return !is_recursive(child, parent);
});
}
soinfo* needed_by = task->get_needed_by();
if (is_recursive(si, needed_by)) {
+ DL_ERR("recursive link to \"%s\"", si->name);
return false;
}
void soinfo::add_child(soinfo* child) {
if (has_min_version(0)) {
- child->parents.push_back(this);
this->children.push_back(child);
}
}