--- wp-cache-phase2.php	2008-09-17 17:37:02.000000000 -0700
+++ wp-cache-phase2.php	2008-09-19 11:49:03.000000000 -0700
@@ -236,11 +236,21 @@
 		fclose($fr);
 		if( $fr2 ) {
 			fclose($fr2);
-			rename( $tmp_cache_filename, $cache_fname );
+			if (!rename( $tmp_cache_filename, $cache_fname )) {
+				// we may be on Windows with the target file already existing --
+				// remove it and try again
+				unlink($cache_fname);
+				rename( $tmp_cache_filename, $cache_fname );
+			}
 		}
 		if( $gz ) {
 			fclose($gz);
-			rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' );
+			if (!rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' )) {
+				// we may be on Windows with the target file already existing --
+				// remove it and try again
+				unlink($cache_fname . '.gz');
+				rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' );
+			}
 		}
 	}
 	wp_cache_writers_exit();
