From: Douglas Gregor Date: Thu, 23 Sep 2010 18:47:53 +0000 (+0000) Subject: Add some missing concurrency checks into libclang X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=593b0c1047f1323ebbda78ae38e96f976241c663;p=clang Add some missing concurrency checks into libclang git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114682 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index 6d6938a158..d2d00571c1 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -2309,6 +2309,7 @@ struct ReparseTranslationUnitInfo { unsigned options; int result; }; + static void clang_reparseTranslationUnit_Impl(void *UserData) { ReparseTranslationUnitInfo *RTUI = static_cast(UserData); @@ -2321,6 +2322,9 @@ static void clang_reparseTranslationUnit_Impl(void *UserData) { if (!TU) return; + + ASTUnit *CXXUnit = static_cast(TU); + ASTUnit::ConcurrencyCheck Check(*CXXUnit); llvm::SmallVector RemappedFiles; for (unsigned I = 0; I != num_unsaved_files; ++I) { @@ -2331,10 +2335,10 @@ static void clang_reparseTranslationUnit_Impl(void *UserData) { Buffer)); } - if (!static_cast(TU)->Reparse(RemappedFiles.data(), - RemappedFiles.size())) - RTUI->result = 0; + if (!CXXUnit->Reparse(RemappedFiles.data(), RemappedFiles.size())) + RTUI->result = 0; } + int clang_reparseTranslationUnit(CXTranslationUnit TU, unsigned num_unsaved_files, struct CXUnsavedFile *unsaved_files, diff --git a/tools/libclang/CIndexCodeCompletion.cpp b/tools/libclang/CIndexCodeCompletion.cpp index c15c1ad84b..e473384813 100644 --- a/tools/libclang/CIndexCodeCompletion.cpp +++ b/tools/libclang/CIndexCodeCompletion.cpp @@ -622,6 +622,8 @@ void clang_codeCompleteAt_Impl(void *UserData) { if (!AST) return; + ASTUnit::ConcurrencyCheck Check(*AST); + // Perform the remapping of source files. llvm::SmallVector RemappedFiles; for (unsigned I = 0; I != num_unsaved_files; ++I) {