filemanager validator

This commit is contained in:
andrew (from workstation) 2020-05-19 21:21:10 +02:00
parent 421b5fa9f0
commit faf99da949

View File

@ -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();