summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/CIndex.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-09-23 18:47:53 +0000
committerDouglas Gregor <dgregor@apple.com>2010-09-23 18:47:53 +0000
commitca5b053920772e3d3f9ee4ef13db732ae1c3dc39 (patch)
treec5dcef112d2c63c3754e00c2e1c60735752f4ec0 /clang/tools/libclang/CIndex.cpp
parent6b8b2b7312f20da4fa34c26be8bb346d88ec1dd5 (diff)
downloadbcm5719-llvm-ca5b053920772e3d3f9ee4ef13db732ae1c3dc39.tar.gz
bcm5719-llvm-ca5b053920772e3d3f9ee4ef13db732ae1c3dc39.zip
Add some missing concurrency checks into libclang
llvm-svn: 114682
Diffstat (limited to 'clang/tools/libclang/CIndex.cpp')
-rw-r--r--clang/tools/libclang/CIndex.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index 6d6938a1580..d2d00571c1d 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/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<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,
OpenPOWER on IntegriCloud