Przeglądaj źródła

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 lat temu
rodzic
commit
b94514f020
1 zmienionych plików z 5 dodań i 0 usunięć
  1. 5 0
      Source/cmGlobalNinjaGenerator.cxx

+ 5 - 0
Source/cmGlobalNinjaGenerator.cxx

@@ -385,6 +385,11 @@ void cmGlobalNinjaGenerator::Generate()
   this->WriteTargetAliases(*this->BuildFileStream);
   this->WriteTargetAliases(*this->BuildFileStream);
   this->WriteBuiltinTargets(*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->CloseRulesFileStream();
   this->CloseBuildFileStream();
   this->CloseBuildFileStream();
 }
 }