Fix try_compile RemoveFile anti-virus loop (#11503)
Commit 3827991e
(...fix...not being able to remove try compile code,
2008-03-26) introduced a loop of RemoveFile attempts to overcome
anti-virus locks on recently created try_compile executables. Fix the
logic in this loop to work when the file is already missing.
This commit is contained in:
parent
c300ef1c66
commit
097294e667
|
@ -396,26 +396,17 @@ void cmCoreTryCompile::CleanupFiles(const char* binDir)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!cmSystemTools::RemoveFile(fullPath.c_str()))
|
// Sometimes anti-virus software hangs on to new files so we
|
||||||
{
|
// cannot delete them immediately. Try a few times.
|
||||||
bool removed = false;
|
int tries = 5;
|
||||||
int numAttempts = 0;
|
while(!cmSystemTools::RemoveFile(fullPath.c_str()) &&
|
||||||
// sometimes anti-virus software hangs on to
|
--tries && cmSystemTools::FileExists(fullPath.c_str()))
|
||||||
// new files and we can not delete them, so try
|
|
||||||
// 5 times with .5 second delay between tries.
|
|
||||||
while(!removed && numAttempts < 5)
|
|
||||||
{
|
{
|
||||||
cmSystemTools::Delay(500);
|
cmSystemTools::Delay(500);
|
||||||
if(cmSystemTools::RemoveFile(fullPath.c_str()))
|
|
||||||
{
|
|
||||||
removed = true;
|
|
||||||
}
|
}
|
||||||
numAttempts++;
|
if(tries == 0)
|
||||||
}
|
|
||||||
if(!removed)
|
|
||||||
{
|
{
|
||||||
std::string m = "Remove failed on file: ";
|
std::string m = "Remove failed on file: " + fullPath;
|
||||||
m += fullPath;
|
|
||||||
cmSystemTools::ReportLastSystemError(m.c_str());
|
cmSystemTools::ReportLastSystemError(m.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -423,7 +414,6 @@ void cmCoreTryCompile::CleanupFiles(const char* binDir)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void cmCoreTryCompile::FindOutputFile(const char* targetName)
|
void cmCoreTryCompile::FindOutputFile(const char* targetName)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue