From: sapier Date: Mon, 8 Jul 2013 19:02:42 +0000 (+0200) Subject: fix crash on play/start with empty world list X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=f419f66546b72ed265a5a4dc96569aeee8880d7a;p=zefram%2Fminetest%2Fminetest_engine.git fix crash on play/start with empty world list make enter button work in create world dialog --- diff --git a/builtin/mainmenu.lua b/builtin/mainmenu.lua index 6670a5eb..30cff823 100644 --- a/builtin/mainmenu.lua +++ b/builtin/mainmenu.lua @@ -332,6 +332,10 @@ function menu.filtered_index_to_plain(filtered_index) local temp_idx = 0 + if menu.worldlist == nil then + return -1 + end + for i=1,#menu.worldlist,1 do if menu.worldlist[i].gameid == current_game.id then temp_idx = temp_idx +1 @@ -418,6 +422,10 @@ function menu.update_last_game(world_idx) if gamedata.selected_world <= #menu.worldlist then local world = menu.worldlist[gamedata.selected_world] + if world == nil then + return + end + for i=1,#gamemgr.games,1 do if gamemgr.games[i].id == world.gameid then menu.last_game = i @@ -574,7 +582,8 @@ end -------------------------------------------------------------------------------- function tabbuilder.handle_create_world_buttons(fields) - if fields["world_create_confirm"] then + if fields["world_create_confirm"] or + fields["key_enter"] then local worldname = fields["te_world_name"] local gameindex = engine.get_textlist_index("games") diff --git a/src/main.cpp b/src/main.cpp index 02bffa84..580260ad 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1667,7 +1667,8 @@ int main(int argc, char *argv[]) } // Set world path to selected one - if(menudata.selected_world != -1){ + if ((menudata.selected_world >= 0) && + (menudata.selected_world < worldspecs.size())) { worldspec = worldspecs[menudata.selected_world]; infostream<<"Selected world: "<