Browse Source

Use registry setting for removal retry count and delay

Instead of hardcoding the amount of retries and the time to sleep
between them when removing directories on Windows, use the setting
potentially present in the registry instead. This setting is already
used when retrying moving directories.
Kasper Laudrup 6 years ago
parent
commit
5729580376
1 changed files with 8 additions and 2 deletions
  1. 8 2
      Source/cmSystemTools.cxx

+ 8 - 2
Source/cmSystemTools.cxx

@@ -2838,14 +2838,20 @@ bool cmSystemTools::CheckRPath(std::string const& file,
 
 bool cmSystemTools::RepeatedRemoveDirectory(const std::string& dir)
 {
+#ifdef _WIN32
   // Windows sometimes locks files temporarily so try a few times.
-  for (int i = 0; i < 10; ++i) {
+  WindowsFileRetry retry = cmSystemTools::GetWindowsFileRetry();
+
+  for (unsigned int i = 0; i < retry.Count; ++i) {
     if (cmSystemTools::RemoveADirectory(dir)) {
       return true;
     }
-    cmSystemTools::Delay(100);
+    cmSystemTools::Delay(retry.Delay);
   }
   return false;
+#else
+  return cmSystemTools::RemoveADirectory(dir);
+#endif
 }
 
 bool cmSystemTools::StringToLong(const char* str, long* value)