]> granicus.if.org Git - clang/commitdiff
Add some missing concurrency checks into libclang
authorDouglas Gregor <dgregor@apple.com>
Thu, 23 Sep 2010 18:47:53 +0000 (18:47 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 23 Sep 2010 18:47:53 +0000 (18:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114682 91177308-0d34-0410-b5e6-96231b3b80d8

tools/libclang/CIndex.cpp
tools/libclang/CIndexCodeCompletion.cpp

index 6d6938a158033f032be68df9e17e0ffc1d8cb7e0..d2d00571c1d8f824ffbb9fbf5cc747a45249704a 100644 (file)
@@ -2309,6 +2309,7 @@ struct ReparseTranslationUnitInfo {
   unsigned options;
   int result;
 };
+
 static void clang_reparseTranslationUnit_Impl(void *UserData) {
   ReparseTranslationUnitInfo *RTUI =
     static_cast<ReparseTranslationUnitInfo*>(UserData);
@@ -2321,6 +2322,9 @@ static void clang_reparseTranslationUnit_Impl(void *UserData) {
 
   if (!TU)
     return;
+
+  ASTUnit *CXXUnit = static_cast<ASTUnit *>(TU);
+  ASTUnit::ConcurrencyCheck Check(*CXXUnit);
   
   llvm::SmallVector<ASTUnit::RemappedFile, 4> 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<ASTUnit *>(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,
index c15c1ad84bc7398ef538d8882472cb55be0b5dc8..e473384813f7379f67263dd2e0728db686f3f9cf 100644 (file)
@@ -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<ASTUnit::RemappedFile, 4> RemappedFiles;
   for (unsigned I = 0; I != num_unsaved_files; ++I) {