diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-04-05 21:10:19 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-04-05 21:10:19 +0000 |
commit | 3687e9d3a5dbfa9963af02a49a2b139d91310813 (patch) | |
tree | ade3e3fa898569e289eb9dd3e4642b1724d2195e /lib/Frontend/ASTMerge.cpp | |
parent | 4800ea6ff8017cf803c32a5fd63b94c0614014e3 (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.cpp | 3 |
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; |