From: rubenwardy Date: Wed, 7 Jun 2017 20:33:42 +0000 (+0100) Subject: Sfinv: Remove possibility of infinite loop when homepage doesn't exist X-Git-Tag: 0.4.17.1~18 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=86eb0e1617283628c18510a01465b0f602665d64;p=oweals%2Fminetest_game.git Sfinv: Remove possibility of infinite loop when homepage doesn't exist --- diff --git a/mods/sfinv/api.lua b/mods/sfinv/api.lua index c9b9d4a7..fdb652b8 100644 --- a/mods/sfinv/api.lua +++ b/mods/sfinv/api.lua @@ -29,7 +29,8 @@ end function sfinv.get_nav_fs(player, context, nav, current_idx) -- Only show tabs if there is more than one page 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 return "" end @@ -84,9 +85,20 @@ function sfinv.get_formspec(player, context) return page:get(player, context) else 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") - 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) end end