[cfe-commits] r168133 - /cfe/trunk/lib/Frontend/ASTUnit.cpp
Douglas Gregor
dgregor at apple.com
Thu Nov 15 20:42:39 PST 2012
Nice catch!
On Nov 15, 2012, at 7:34 PM, Argyrios Kyrtzidis <akyrtzi at gmail.com> wrote:
> Author: akirtzidis
> Date: Thu Nov 15 21:34:57 2012
> New Revision: 168133
>
> URL: http://llvm.org/viewvc/llvm-project?rev=168133&view=rev
> Log:
> [libclang] When caching code-completion results, pass the CachedCompletionAllocator
> to the CodeCompletionTUInfo that is going to be used to get the results.
>
> Previously we would use ASTUnit's CodeCompletionTUInfo which has its own allocator
> that will go away when we reparse. That could result in a use-after-free bug when
> getting the parent context name from a CodeCompletionString.
>
> Addresses rdar://12568377.
>
> Modified:
> cfe/trunk/lib/Frontend/ASTUnit.cpp
>
> Modified: cfe/trunk/lib/Frontend/ASTUnit.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=168133&r1=168132&r2=168133&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Frontend/ASTUnit.cpp (original)
> +++ cfe/trunk/lib/Frontend/ASTUnit.cpp Thu Nov 15 21:34:57 2012
> @@ -356,8 +356,9 @@
> typedef CodeCompletionResult Result;
> SmallVector<Result, 8> Results;
> CachedCompletionAllocator = new GlobalCodeCompletionAllocator;
> + CodeCompletionTUInfo CCTUInfo(CachedCompletionAllocator);
> TheSema->GatherGlobalCodeCompletions(*CachedCompletionAllocator,
> - getCodeCompletionTUInfo(), Results);
> + CCTUInfo, Results);
>
> // Translate global code completions into cached completions.
> llvm::DenseMap<CanQualType, unsigned> CompletionTypes;
> @@ -369,7 +370,7 @@
> CachedCodeCompletionResult CachedResult;
> CachedResult.Completion = Results[I].CreateCodeCompletionString(*TheSema,
> *CachedCompletionAllocator,
> - getCodeCompletionTUInfo(),
> + CCTUInfo,
> IncludeBriefCommentsInCodeCompletion);
> CachedResult.ShowInContexts = getDeclShowContexts(Results[I].Declaration,
> Ctx->getLangOpts(),
> @@ -435,7 +436,7 @@
> CachedResult.Completion
> = Results[I].CreateCodeCompletionString(*TheSema,
> *CachedCompletionAllocator,
> - getCodeCompletionTUInfo(),
> + CCTUInfo,
> IncludeBriefCommentsInCodeCompletion);
> CachedResult.ShowInContexts = RemainingContexts;
> CachedResult.Priority = CCP_NestedNameSpecifier;
> @@ -458,7 +459,7 @@
> CachedResult.Completion
> = Results[I].CreateCodeCompletionString(*TheSema,
> *CachedCompletionAllocator,
> - getCodeCompletionTUInfo(),
> + CCTUInfo,
> IncludeBriefCommentsInCodeCompletion);
> CachedResult.ShowInContexts
> = (1LL << CodeCompletionContext::CCC_TopLevel)
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list