Spin IncludeComplete's destructor until scanning completes

This commit is contained in:
Leszek Swirski 2018-12-04 13:27:33 +01:00
parent a10d53071c
commit 22997099a5
2 changed files with 8 additions and 0 deletions

View File

@ -102,6 +102,13 @@ CompletionItem BuildCompletionItem(const std::string &path,
IncludeComplete::IncludeComplete(Project *project) IncludeComplete::IncludeComplete(Project *project)
: is_scanning(false), project_(project) {} : is_scanning(false), project_(project) {}
IncludeComplete::~IncludeComplete() {
// Spin until the scanning has completed.
while(is_scanning.load()){
std::this_thread::sleep_for(std::chrono::milliseconds(100));
};
}
void IncludeComplete::Rescan() { void IncludeComplete::Rescan() {
if (is_scanning || LLVM_VERSION_MAJOR >= 8) if (is_scanning || LLVM_VERSION_MAJOR >= 8)
return; return;

View File

@ -26,6 +26,7 @@ struct Project;
struct IncludeComplete { struct IncludeComplete {
IncludeComplete(Project *project); IncludeComplete(Project *project);
~IncludeComplete();
// Starts scanning directories. Clears existing cache. // Starts scanning directories. Clears existing cache.
void Rescan(); void Rescan();