diff options
author | 2020-02-25 10:04:44 +0000 | |
---|---|---|
committer | 2020-02-25 10:04:44 +0000 | |
commit | b921379e3920d071d2100b200c0725b9a00c0897 (patch) | |
tree | 251624ae23e62cdfe077d1d101847416a99ef198 /jni/node.cpp | |
parent | c6157cacff0adceb7b2504cfa7017ae4b1b7ca48 (diff) | |
parent | fc867dd040ddee561f97d1bf9c1552a0d79153df (diff) |
Merge "FuseDaemon: Rework inode tracking."
Diffstat (limited to 'jni/node.cpp')
-rw-r--r-- | jni/node.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/jni/node.cpp b/jni/node.cpp index 618777442..e17a9e88a 100644 --- a/jni/node.cpp +++ b/jni/node.cpp @@ -97,13 +97,15 @@ void node::DeleteTree(node* tree) { std::lock_guard<std::recursive_mutex> guard(*tree->lock_); if (tree) { - for (node* child : tree->children_) { + // Make a copy of the list of children because calling Delete tree + // will modify the list of children, which will cause issues while + // iterating over them. + std::vector<node*> children(tree->children_.begin(), tree->children_.end()); + for (node* child : children) { DeleteTree(child); } - tree->children_.clear(); - LOG(DEBUG) << "DELETE node " << tree->GetName(); - tree->RemoveFromParent(); + CHECK(tree->children_.empty()); delete tree; } } |