From 0ba5874b4f5f1a7565df8bfd20c91c309647429a Mon Sep 17 00:00:00 2001 From: orwell96 Date: Sat, 2 Jan 2021 20:57:45 +0100 Subject: Some more serializer fixes (backported from new_lzb): - Move DUMP_DEBUG_SAVE block before the actual saving so it can be used to trace serializer errors - Don't crash on functions in data, ignore them silently - Increase the save interval --- advtrains/init.lua | 20 ++++++++++---------- serialize_lib/serialize.lua | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/advtrains/init.lua b/advtrains/init.lua index 3c3e47b..6e622e5 100644 --- a/advtrains/init.lua +++ b/advtrains/init.lua @@ -537,6 +537,15 @@ advtrains.avt_save = function(remove_players_from_wagons) ["ndb4.ls"] = advtrains.ndb.save_callback } + if DUMP_DEBUG_SAVE then + local file, err = io.open(advtrains.fpath.."_DUMP", "w") + if err then + return + end + file:write(dump(parts_table)) + file:close() + end + --THE MAGIC HAPPENS HERE local succ, err = serialize_lib.save_atomic_multiple(parts_table, advtrains.fpath.."_", callbacks_table) @@ -546,21 +555,12 @@ advtrains.avt_save = function(remove_players_from_wagons) -- store version advtrains.save_component(4, "version") end - - if DUMP_DEBUG_SAVE then - local file, err = io.open(advtrains.fpath.."_DUMP", "w") - if err then - return - end - file:write(dump(parts_table)) - file:close() - end end --## MAIN LOOP ##-- --Calls all subsequent main tasks of both advtrains and atlatc local init_load=false -local save_interval=20 +local save_interval=60 local save_timer=save_interval advtrains.mainloop_runcnt=0 diff --git a/serialize_lib/serialize.lua b/serialize_lib/serialize.lua index 436bf18..a525e9e 100644 --- a/serialize_lib/serialize.lua +++ b/serialize_lib/serialize.lua @@ -88,8 +88,8 @@ function value_to_string(t) elseif type(t)=="string" then return "S"..escape_chars(t) else - file:close() - error("Can not serialize '"..type(t).."' type!") + --error("Can not serialize '"..type(t).."' type!") + return "S" end return str end -- cgit v1.2.3