Sfinv: Remove possibility of infinite loop when homepage doesn't exist
This commit is contained in:
parent
db08c0d721
commit
a4b94a3347
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue