(fixed) Crash on delayed teleport and invalid id
Posted: Sun Jul 19, 2015 6:12 pm
Hi
Under some circumstances, it is possible for teleports and messages to combine to crash the system. The teleport can get delayed indefinitely, and if the target is deleted for any reason then everything falls over due to messages involving a now-invalid id...
simple test case:
http://en.file-upload.net/download-1077 ... h.zip.html
fix:
add a test for validity to triggers.lua/finish_queued_teleport:
Under some circumstances, it is possible for teleports and messages to combine to crash the system. The teleport can get delayed indefinitely, and if the target is deleted for any reason then everything falls over due to messages involving a now-invalid id...
simple test case:
http://en.file-upload.net/download-1077 ... h.zip.html
fix:
add a test for validity to triggers.lua/finish_queued_teleport:
Code: Select all
function finish_queued_teleport(id)
local targ = exvar[id].inst
local lev = exvar[id].lev
local xc = exvar[id].x
local yc = exvar[id].y
if (exvar[id].disabled) then return end
-- test added here:
if (not dsb_valid_inst(targ)) then return end
local occupied = nil
...