Skip to content

Commit

Permalink
TNT: Fix up nil derefs
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
sofar authored and paramat committed Apr 16, 2016
1 parent da5f4a9 commit 0736d30
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions mods/tnt/init.lua
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down

0 comments on commit 0736d30

Please sign in to comment.