Skip to content
Snippets Groups Projects
Commit 0736d30e authored by Auke Kok's avatar Auke Kok Committed by paramat
Browse files

TNT: Fix up nil derefs

I spotted two places where under stress (many explosions) luajit would
end up passing nil to these functions. I'm not entirely sure how,
but it seems good form to guard against it, which does make it
more robust. After this patch, I'm not able to crash the server. With
many explosions, it may still lag significantly, but always returns
in the end.
parent da5f4a93
No related branches found
No related tags found
No related merge requests found
......@@ -51,9 +51,9 @@ local function eject_drops(drops, pos, radius)
local count = item:get_count()
local take_est = math.log(count * count) + math.random(0,4) - 2
while count > 0 do
local take = math.min(take_est,
local take = math.max(1,math.min(take_est,
item:get_count(),
item:get_stack_max())
item:get_stack_max()))
rand_pos(pos, drop_pos, radius)
local obj = minetest.add_item(drop_pos, item:get_name() .. " " .. take)
if obj then
......@@ -165,7 +165,10 @@ local function add_effects(pos, radius, drops)
local count = stack:get_count()
if count > most then
most = count
texture = minetest.registered_nodes[name].tiles[1]
local def = minetest.registered_nodes[name]
if def and def.tiles and def.tiles[1] then
texture = def.tiles[1]
end
end
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment