| Index: mojo/services/public/cpp/view_manager/lib/node.cc
|
| diff --git a/mojo/services/public/cpp/view_manager/lib/node.cc b/mojo/services/public/cpp/view_manager/lib/node.cc
|
| index 292cf29e381ca53f29914b2495ccabbdf1598d71..738a5be97c4750e9f6db3e5e53282d1cc65e7297 100644
|
| --- a/mojo/services/public/cpp/view_manager/lib/node.cc
|
| +++ b/mojo/services/public/cpp/view_manager/lib/node.cc
|
| @@ -216,8 +216,17 @@ void Node::Destroy() {
|
|
|
| if (manager_)
|
| static_cast<ViewManagerClientImpl*>(manager_)->DestroyNode(id_);
|
| - while (!children_.empty())
|
| - children_.front()->Destroy();
|
| + while (!children_.empty()) {
|
| + Node* child = children_.front();
|
| + if (!OwnsNode(manager_, child)) {
|
| + NodePrivate(child).ClearParent();
|
| + children_.erase(children_.begin());
|
| + } else {
|
| + child->Destroy();
|
| + DCHECK(std::find(children_.begin(), children_.end(), child) ==
|
| + children_.end());
|
| + }
|
| + }
|
| LocalDestroy();
|
| }
|
|
|
|
|