* subversion/libsvn_subr/io.c (win32_file_rename): Rename `status` to `err`. This lays the groundwork for fixing the incorrect error status being propagated to the caller in case where we fail to stat the destination path while being in the middle of a failed rename.
Win32: prevent svn_io_file_rename2() from spinning in the retry loop in a racy case where the rename function clears the read-only attribute from the destination file, but another thread or process is quick enough to set it back before the original rename function has a chance to proceed.
Despite sounding like an uncommon case, this may happen when the API is being used to atomically update the file contents while also altering its read-only attribute (and where such updates can occur in parallel).
Fix this by including the call that clears the read-only attribute on the destination into the retry loop instead of calling it only once before looping.
* subversion/libsvn_subr/io.c (win32_file_rename): Handle EACCES/EEXIST and attempt to clear the destination read-only attribute if it's there. (svn_io_file_rename2): Don't call svn_io_set_file_read_write() in the Win32-specific portion of this function, since clearing the read-only attribute is now a part of the win32_file_rename() function.