From: Ben Langmuir Date: Fri, 18 Apr 2014 20:39:48 +0000 (+0000) Subject: Don't read CompilerInstance fields that don't exist in ASTUnit X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f05ef170320297fbf6c88c324fb5f844f8ddeb72;p=clang Don't read CompilerInstance fields that don't exist in ASTUnit When transferring data from a CompilerInstance in an error path we need to consider cases where the various fields are uninitialized. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@206644 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index 5035dac53c..240acc2f50 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/lib/Frontend/ASTUnit.cpp @@ -1717,11 +1717,14 @@ void ASTUnit::transferASTDataFromCompilerInstance(CompilerInstance &CI) { // Steal the created target, context, and preprocessor. TheSema.reset(CI.takeSema()); Consumer.reset(CI.takeASTConsumer()); - Ctx = &CI.getASTContext(); - PP = &CI.getPreprocessor(); + if (CI.hasASTContext()) + Ctx = &CI.getASTContext(); + if (CI.hasPreprocessor()) + PP = &CI.getPreprocessor(); CI.setSourceManager(0); CI.setFileManager(0); - Target = &CI.getTarget(); + if (CI.hasTarget()) + Target = &CI.getTarget(); Reader = CI.getModuleManager(); HadModuleLoaderFatalFailure = CI.hadModuleLoaderFatalFailure(); }