Trigger IO error only after exhausting attempts

(cherry picked from commit a4fae0e5e3)
This commit is contained in:
Tom Dobbelaere 2018-03-30 18:13:19 +02:00 committed by Hein-Pieter van Braam
parent 4c19fc2eb1
commit 060f9f2cd7
1 changed files with 9 additions and 3 deletions

View File

@ -138,16 +138,22 @@ void FileAccessWindows::close() {
//atomic replace for existing file //atomic replace for existing file
rename_error = !ReplaceFileW(save_path.c_str(), (save_path + ".tmp").c_str(), NULL, 2 | 4, NULL, NULL); rename_error = !ReplaceFileW(save_path.c_str(), (save_path + ".tmp").c_str(), NULL, 2 | 4, NULL, NULL);
} }
if (rename_error && close_fail_notify) {
close_fail_notify(save_path);
}
if (rename_error) { if (rename_error) {
attempts--; attempts--;
OS::get_singleton()->delay_usec(1000000); //wait 100msec and try again OS::get_singleton()->delay_usec(1000000); //wait 100msec and try again
} }
} }
if (rename_error) {
if (close_fail_notify) {
close_fail_notify(save_path);
}
ERR_EXPLAIN("Safe save failed. This may be a permissions problem, but also may happen because you are running a paranoid antivirus. If this is the case, please switch to Windows Defender or disable the 'safe save' option in editor settings. This makes it work, but increases the risk of file corruption in a crash.");
}
save_path = ""; save_path = "";
ERR_FAIL_COND(rename_error); ERR_FAIL_COND(rename_error);
} }
} }