diff options
Diffstat (limited to 'configmgr/source/access.cxx')
-rw-r--r-- | configmgr/source/access.cxx | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/configmgr/source/access.cxx b/configmgr/source/access.cxx index 7fc239cb9d5c..b6617b416c66 100644 --- a/configmgr/source/access.cxx +++ b/configmgr/source/access.cxx @@ -1607,31 +1607,28 @@ void Access::commitChildChanges( // children); clarify what exactly should happen here for // directly inserted children } - NodeMap * members = getNode()->getMemberMap(); - if (members != 0) { - NodeMap::iterator j(members->find(i->first)); - if (child.is()) { - // Inserted: - if (j != members->end()) { - childValid = childValid && - j->second->getFinalized() == Data::NO_LAYER; - if (childValid) { - child->getNode()->setMandatory( - j->second->getMandatory()); - } - } - if (childValid) { - (*members)[i->first] = child->getNode(); - } - } else { - // Removed: - childValid = childValid && j != members->end() && - j->second->getFinalized() == Data::NO_LAYER && - j->second->getMandatory() == Data::NO_LAYER; + NodeMap & members = getNode()->getMembers(); + NodeMap::iterator j(members.find(i->first)); + if (child.is()) { + // Inserted: + if (j != members.end()) { + childValid = childValid && + j->second->getFinalized() == Data::NO_LAYER; if (childValid) { - members->erase(j); + child->getNode()->setMandatory(j->second->getMandatory()); } } + if (childValid) { + members[i->first] = child->getNode(); + } + } else { + // Removed: + childValid = childValid && j != members.end() && + j->second->getFinalized() == Data::NO_LAYER && + j->second->getMandatory() == Data::NO_LAYER; + if (childValid) { + members.erase(j); + } } if (childValid && i->second.directlyModified) { Path path(getAbsolutePath()); |