parent->RegisterChild(GetSelf());
}
+ /* We need to make a copy of the child objects becauuse the
+ * OnParentCommitted() handler is going to update the list. */
+ set<ConfigItem::WeakPtr> children = m_ChildObjects;
+
/* notify our children of the update */
- BOOST_FOREACH(const ConfigItem::WeakPtr wchild, m_ChildObjects) {
+ BOOST_FOREACH(const ConfigItem::WeakPtr wchild, children) {
const ConfigItem::Ptr& child = wchild.lock();
if (!child)
{
BOOST_FOREACH(const String& parentName, m_Parents) {
ConfigItem::Ptr parent = GetObject(GetType(), parentName);
- parent->UnregisterChild(GetSelf());
+
+ if (parent)
+ parent->UnregisterChild(GetSelf());
}
}
fp << " {" << "\n";
m_ExpressionList->Dump(fp, 1);
fp << "}" << "\n";
-}
\ No newline at end of file
+}