Use minetest.safe_file_write() to atomically save state [Breaks MT4 compat]

master
orwell96 2020-01-10 14:08:56 +01:00
parent dbaafeda3e
commit 1bb1d825f4
1 changed files with 5 additions and 8 deletions

View File

@ -343,15 +343,12 @@ advtrains.save_component = function (tbl, name)
minetest.log("error", " Failed to serialize advtrains save data!") minetest.log("error", " Failed to serialize advtrains save data!")
return return
end end
local temppath = advtrains.fpath.."_"..name.."~" local path = advtrains.fpath.."_"..name
local file, err = io.open(temppath, "w") local success = minetest.safe_file_write(path, datastr)
if err then
minetest.log("error", " Failed to write advtrains save data to file "..temppath..": "..(err or "Unknown Error")) if not success then
return minetest.log("error", " Failed to write advtrains save data to file "..path)
end end
file:write(datastr)
file:close()
os.rename(temppath, advtrains.fpath.."_"..name)
end end