From f419f66546b72ed265a5a4dc96569aeee8880d7a Mon Sep 17 00:00:00 2001 From: sapier Date: Mon, 8 Jul 2013 21:02:42 +0200 Subject: [PATCH] fix crash on play/start with empty world list make enter button work in create world dialog --- builtin/mainmenu.lua | 11 ++++++++++- src/main.cpp | 3 ++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/builtin/mainmenu.lua b/builtin/mainmenu.lua index 6670a5eb8..30cff823e 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 02bffa84d..580260ade 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: "<