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.

llvm-svn: 206644
This commit is contained in:
Ben Langmuir 2014-04-18 20:39:48 +00:00
parent 12d6c3b4d7
commit 532fdc0d4f
1 changed files with 6 additions and 3 deletions

View File

@ -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();
}