? .directory
? drupal-818818.patch
Index: includes/file.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/file.inc,v
retrieving revision 1.121.2.12
diff -u -p -r1.121.2.12 file.inc
--- includes/file.inc	11 May 2010 09:49:58 -0000	1.121.2.12
+++ includes/file.inc	18 Jun 2010 23:14:43 -0000
@@ -263,7 +263,23 @@ function file_copy(&$source, $dest = 0, 
       return FALSE;
     }
 
-    if (!@copy($source, $dest)) {
+    // Perform the replace operation.
+    $result = FALSE;
+    if ($replace == FILE_EXISTS_REPLACE) {
+      $temp_name = tempnam(realpath(dirname($dest)), 'file');
+      if ($temp_name && @copy($source, $temp_name)) {
+        @unlink($dest);
+        $result = @rename($temp_name, $dest);
+      }
+      else {
+        $result = FALSE;
+      }
+    }
+    // Perform the copy operation.
+    else {
+      $result = @copy($source, $dest);
+    }
+    if ($result === FALSE) {
       drupal_set_message(t('The selected file %file could not be copied.', array('%file' => $source)), 'error');
       return 0;
     }
