aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend/ASTMerge.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-04-05 21:10:19 +0000
committerDouglas Gregor <dgregor@apple.com>2010-04-05 21:10:19 +0000
commit3687e9d3a5dbfa9963af02a49a2b139d91310813 (patch)
treeade3e3fa898569e289eb9dd3e4642b1724d2195e /lib/Frontend/ASTMerge.cpp
parent4800ea6ff8017cf803c32a5fd63b94c0614014e3 (diff)
Clarify the ownership semantics of the Diagnostic object used by
ASTUnit. Previously, we would end up with use-after-free errors because the Diagnostic object would be creating in one place (say, CIndex) and its ownership would not be transferred into the ASTUnit. Fixes <rdar://problem/7818608>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100464 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/ASTMerge.cpp')
-rw-r--r--lib/Frontend/ASTMerge.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/Frontend/ASTMerge.cpp b/lib/Frontend/ASTMerge.cpp
index 2228ea45df..24658615a9 100644
--- a/lib/Frontend/ASTMerge.cpp
+++ b/lib/Frontend/ASTMerge.cpp
@@ -37,7 +37,8 @@ void ASTMergeAction::ExecuteAction() {
CI.getDiagnostics().SetArgToStringFn(&FormatASTNodeDiagnosticArgument,
&CI.getASTContext());
for (unsigned I = 0, N = ASTFiles.size(); I != N; ++I) {
- ASTUnit *Unit = ASTUnit::LoadFromPCHFile(ASTFiles[I], CI.getDiagnostics(),
+ ASTUnit *Unit = ASTUnit::LoadFromPCHFile(ASTFiles[I],
+ UnownedDiag(CI.getDiagnostics()),
false);
if (!Unit)
continue;