소스 검색

Ninja: mark rules/build file streams failed if error occurred (#13067, #13105)

This causes cmGeneratedFileStream to delete the temporary files,
rather than overwriting the (working) existing files.
Peter Collingbourne 13 년 전
부모
커밋
b94514f020
1개의 변경된 파일5개의 추가작업 그리고 0개의 파일을 삭제
  1. 5 0
      Source/cmGlobalNinjaGenerator.cxx

+ 5 - 0
Source/cmGlobalNinjaGenerator.cxx

@@ -385,6 +385,11 @@ void cmGlobalNinjaGenerator::Generate()
   this->WriteTargetAliases(*this->BuildFileStream);
   this->WriteBuiltinTargets(*this->BuildFileStream);
 
+  if (cmSystemTools::GetErrorOccuredFlag()) {
+    this->RulesFileStream->setstate(std::ios_base::failbit);
+    this->BuildFileStream->setstate(std::ios_base::failbit);
+  }
+
   this->CloseRulesFileStream();
   this->CloseBuildFileStream();
 }