Browse Source

fix rename_to() on windows

David Rose 16 years ago
parent
commit
5f0b8a9a6a
1 changed files with 9 additions and 0 deletions
  1. 9 0
      dtool/src/dtoolutil/filename.cxx

+ 9 - 0
dtool/src/dtoolutil/filename.cxx

@@ -2430,6 +2430,15 @@ rename_to(const Filename &other) const {
     return true;
   }
 
+  // Try unlinking the target first.
+  other.unlink();
+  if (rename(temp_os_specific.c_str(),
+             other_os_specific.c_str()) == 0) {
+    // Successfully renamed.
+    unlink();
+    return true;
+  }
+
   // Failed.
   temp.unlink();
   return false;