Fix atomic saving on windows when save file does not exist

This commit is contained in:
orwell96 2021-01-17 10:27:16 +01:00
parent 8ffdd8c293
commit ed165e1b17
1 changed files with 6 additions and 4 deletions

View File

@ -38,9 +38,9 @@ local function save_atomic_move_file(filename)
if windows_mode then if windows_mode then
local delsucc, err = os.remove(filename) local delsucc, err = os.remove(filename)
if not delsucc then if not delsucc then
serialize_lib.log_error("Unable to delete old savefile '"..filename.."':") serialize_lib.log_warn("Unable to delete old savefile '"..filename.."':")
serialize_lib.log_error(err) serialize_lib.log_warn(err)
return nil, err serialize_lib.log_info("Trying to replace the save file anyway now...")
end end
end end
@ -48,11 +48,13 @@ local function save_atomic_move_file(filename)
local mvsucc, err = os.rename(filename..".new", filename) local mvsucc, err = os.rename(filename..".new", filename)
if not mvsucc then if not mvsucc then
if minetest.settings:get_bool("serialize_lib_no_auto_windows_mode") or windows_mode then if minetest.settings:get_bool("serialize_lib_no_auto_windows_mode") or windows_mode then
serialize_lib.log_error("Unable to move '"..filename.."':") serialize_lib.log_error("Unable to replace save file '"..filename.."':")
serialize_lib.log_error(err) serialize_lib.log_error(err)
return nil, err return nil, err
else else
-- enable windows mode and try again -- enable windows mode and try again
serialize_lib.log_info("Unable to replace save file '"..filename.."' by direct renaming:")
serialize_lib.log_info(err)
serialize_lib.log_info("Enabling Windows mode for atomic saving...") serialize_lib.log_info("Enabling Windows mode for atomic saving...")
windows_mode = true windows_mode = true
return save_atomic_move_file(filename) return save_atomic_move_file(filename)