# # # patch "roster.cc" # from [509453b62c7e189700dc7f16cab51690e114245f] # to [98be4bba97d68e5095a33bae6b8b5f037871fbef] # ============================================================ --- roster.cc 509453b62c7e189700dc7f16cab51690e114245f +++ roster.cc 98be4bba97d68e5095a33bae6b8b5f037871fbef @@ -2255,13 +2255,15 @@ make_restricted_roster(roster_t const & while (!selected.empty()) { - map::const_iterator n = selected.begin(), p = selected.end(); + map::const_iterator n = selected.begin(); L(FL("selected node %d %s parent %d") % n->second->self % n->second->name % n->second->parent); + bool missing_parent = false; + while (!null_node(n->second->parent) && !restricted.has_node(n->second->parent)) { @@ -2272,7 +2274,8 @@ make_restricted_roster(roster_t const & % n->second->name % n->second->parent); - p = selected.find(n->second->parent); + map::const_iterator + p = selected.find(n->second->parent); if (p != selected.end()) { @@ -2280,10 +2283,13 @@ make_restricted_roster(roster_t const & I(is_dir_t(n->second)); } else - break; + { + missing_parent = true; + break; + } } - if (p != selected.end()) + if (!missing_parent) { L(FL("adding node %d %s parent %d") % n->second->self