From af0bdfc6920a578ebcc3be986d0cc1644a68ce2f Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Fri, 27 Jan 2012 01:00:47 +0000 Subject: In FixItRecompile::BeginInvocation(), check the return value of BeginSourceFile(). llvm-svn: 149107 --- clang/lib/Rewrite/FrontendActions.cpp | 38 ++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 18 deletions(-) (limited to 'clang/lib/Rewrite') diff --git a/clang/lib/Rewrite/FrontendActions.cpp b/clang/lib/Rewrite/FrontendActions.cpp index a35861df830..5e33a441118 100644 --- a/clang/lib/Rewrite/FrontendActions.cpp +++ b/clang/lib/Rewrite/FrontendActions.cpp @@ -113,25 +113,27 @@ bool FixItRecompile::BeginInvocation(CompilerInstance &CI) { { const FrontendOptions &FEOpts = CI.getFrontendOpts(); llvm::OwningPtr FixAction(new SyntaxOnlyAction()); - FixAction->BeginSourceFile(CI, FEOpts.Inputs[0]); - - llvm::OwningPtr FixItOpts; - if (FEOpts.FixToTemporaries) - FixItOpts.reset(new FixItRewriteToTemp()); - else - FixItOpts.reset(new FixItRewriteInPlace()); - FixItOpts->Silent = true; - FixItOpts->FixWhatYouCan = FEOpts.FixWhatYouCan; - FixItOpts->FixOnlyWarnings = FEOpts.FixOnlyWarnings; - FixItRewriter Rewriter(CI.getDiagnostics(), CI.getSourceManager(), - CI.getLangOpts(), FixItOpts.get()); - FixAction->Execute(); - - err = Rewriter.WriteFixedFiles(&RewrittenFiles); + if (FixAction->BeginSourceFile(CI, FEOpts.Inputs[0])) { + llvm::OwningPtr FixItOpts; + if (FEOpts.FixToTemporaries) + FixItOpts.reset(new FixItRewriteToTemp()); + else + FixItOpts.reset(new FixItRewriteInPlace()); + FixItOpts->Silent = true; + FixItOpts->FixWhatYouCan = FEOpts.FixWhatYouCan; + FixItOpts->FixOnlyWarnings = FEOpts.FixOnlyWarnings; + FixItRewriter Rewriter(CI.getDiagnostics(), CI.getSourceManager(), + CI.getLangOpts(), FixItOpts.get()); + FixAction->Execute(); - FixAction->EndSourceFile(); - CI.setSourceManager(0); - CI.setFileManager(0); + err = Rewriter.WriteFixedFiles(&RewrittenFiles); + + FixAction->EndSourceFile(); + CI.setSourceManager(0); + CI.setFileManager(0); + } else { + err = true; + } } if (err) return false; -- cgit v1.2.3