filemanager validator
This commit is contained in:
parent
421b5fa9f0
commit
faf99da949
@ -3784,6 +3784,43 @@ void FileManager::memory_cleanup() {
|
||||
}
|
||||
}
|
||||
|
||||
/* DESTROY INVALID FILES */
|
||||
for (unsigned int i = 0; i < file_id_info_.size(); i++) {
|
||||
auto &file = file_id_info_[i];
|
||||
|
||||
if (file.node_id_ != 0) {
|
||||
auto &node = file_nodes_[file.node_id_];
|
||||
|
||||
if (node == nullptr) {
|
||||
empty_file_ids_.push_back(i);
|
||||
file_id_info_[i] = FileIdInfo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* DESTROY INVALID NODES */
|
||||
for (unsigned int i = 0; i < file_nodes_.size(); i++) {
|
||||
auto &node = file_nodes_[i];
|
||||
|
||||
if (node != nullptr) {
|
||||
auto invalid = file_id_info_[node->main_file_id_.get()].node_id_ != ((int32) i);
|
||||
|
||||
if (!invalid) {
|
||||
for (auto &file : node->file_ids_) {
|
||||
if (file_id_info_[file.get()].node_id_ != ((int32) i)) {
|
||||
invalid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (invalid) {
|
||||
empty_node_ids_.push_back(i);
|
||||
file_nodes_[i] = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
file_id_info_.shrink_to_fit();
|
||||
empty_file_ids_.shrink_to_fit();
|
||||
empty_node_ids_.shrink_to_fit();
|
||||
|
Reference in New Issue
Block a user