瀏覽代碼

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