Sfinv: Remove possibility of infinite loop when homepage doesn't exist

This commit is contained in:
rubenwardy 2017-06-07 21:33:42 +01:00 committed by sfan5
parent 93fb9b36ce
commit 86eb0e1617

View File

@ -29,7 +29,8 @@ end
function sfinv.get_nav_fs(player, context, nav, current_idx) function sfinv.get_nav_fs(player, context, nav, current_idx)
-- Only show tabs if there is more than one page -- Only show tabs if there is more than one page
if #nav > 1 then if #nav > 1 then
return "tabheader[0,0;sfinv_nav_tabs;" .. table.concat(nav, ",") .. ";" .. current_idx .. ";true;false]" return "tabheader[0,0;sfinv_nav_tabs;" .. table.concat(nav, ",") ..
";" .. current_idx .. ";true;false]"
else else
return "" return ""
end end
@ -84,9 +85,20 @@ function sfinv.get_formspec(player, context)
return page:get(player, context) return page:get(player, context)
else else
local old_page = context.page local old_page = context.page
context.page = sfinv.get_homepage_name(player) local home_page = sfinv.get_homepage_name(player)
if old_page == home_page then
minetest.log("error", "[sfinv] Couldn't find " .. dump(old_page) ..
", which is also the old page")
return ""
end
context.page = home_page
assert(sfinv.pages[context.page], "[sfinv] Invalid homepage") assert(sfinv.pages[context.page], "[sfinv] Invalid homepage")
minetest.log("warning", "[sfinv] Couldn't find " .. dump(old_page) .. " so using switching to homepage") minetest.log("warning", "[sfinv] Couldn't find " .. dump(old_page) ..
" so switching to homepage")
return sfinv.get_formspec(player, context) return sfinv.get_formspec(player, context)
end end
end end