Browse Source

Merge topic 'try_compile-RemoveFile'

097294e Fix try_compile RemoveFile anti-virus loop (#11503)
Brad King 15 years ago
parent
commit
72ebd4ee12
1 changed files with 11 additions and 21 deletions
  1. 11 21
      Source/cmCoreTryCompile.cxx

+ 11 - 21
Source/cmCoreTryCompile.cxx

@@ -397,28 +397,18 @@ 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.
+          int tries = 5;
+          while(!cmSystemTools::RemoveFile(fullPath.c_str()) &&
+                --tries && cmSystemTools::FileExists(fullPath.c_str()))
             {
             {
-            bool removed = false;
-            int numAttempts = 0;
-            // sometimes anti-virus software hangs on to
-            // 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);
-              if(cmSystemTools::RemoveFile(fullPath.c_str()))
-                {
-                removed = true;
-                }
-              numAttempts++;
-              }
-            if(!removed)
-              {
-              std::string m = "Remove failed on file: ";
-              m += fullPath;
-              cmSystemTools::ReportLastSystemError(m.c_str());
-              }
+            cmSystemTools::Delay(500);
+            }
+          if(tries == 0)
+            {
+            std::string m = "Remove failed on file: " + fullPath;
+            cmSystemTools::ReportLastSystemError(m.c_str());
             }
             }
           }
           }
         }
         }