aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorolive <oliversimmo@gmail.com>2023-03-16 13:57:20 +0000
committerGitHub <noreply@github.com>2023-03-16 14:57:20 +0100
commitb1c8a7d055bf41134fecca9fd92db84c4affeb21 (patch)
treed15a7a4870df9291d2891b907fb3ea8a0561d21d
parent2bed338ef7a6c1ee1b10619fa24ba3e0b1508d09 (diff)
downloadminetest-b1c8a7d055bf41134fecca9fd92db84c4affeb21.tar.xz
Fix empty port assertion error in 'Join Game' menu
Pressing "Register" when the port field was empty led to an assertion error inside `create_register_dialog`, it was simply checking the port was a number.
-rw-r--r--builtin/mainmenu/tab_online.lua14
1 files changed, 8 insertions, 6 deletions
diff --git a/builtin/mainmenu/tab_online.lua b/builtin/mainmenu/tab_online.lua
index 090ef33a5..1b1a0a71a 100644
--- a/builtin/mainmenu/tab_online.lua
+++ b/builtin/mainmenu/tab_online.lua
@@ -346,12 +346,14 @@ local function main_button_handler(tabview, fields, name, tabdata)
return true
end
- if (fields.btn_mp_login or fields.key_enter)
- and fields.te_address ~= "" and fields.te_port then
+ local host_filled = (fields.te_address ~= "") and fields.te_port:match("^%s*[1-9][0-9]*%s*$")
+ local te_port_number = tonumber(fields.te_port)
+
+ if (fields.btn_mp_login or fields.key_enter) and host_filled then
gamedata.playername = fields.te_name
gamedata.password = fields.te_pwd
gamedata.address = fields.te_address
- gamedata.port = tonumber(fields.te_port)
+ gamedata.port = te_port_number
local enable_split_login_register = core.settings:get_bool("enable_split_login_register")
gamedata.allow_login_or_register = enable_split_login_register and "login" or "any"
@@ -391,10 +393,10 @@ local function main_button_handler(tabview, fields, name, tabdata)
return true
end
- if fields.btn_mp_register and fields.te_address ~= "" and fields.te_port then
+ if fields.btn_mp_register and host_filled then
local idx = core.get_table_index("servers")
local server = idx and tabdata.lookup[idx]
- if server and (server.address ~= fields.te_address or server.port ~= tonumber(fields.te_port)) then
+ if server and (server.address ~= fields.te_address or server.port ~= te_port_number) then
server = nil
end
@@ -403,7 +405,7 @@ local function main_button_handler(tabview, fields, name, tabdata)
return true
end
- local dlg = create_register_dialog(fields.te_address, tonumber(fields.te_port), server)
+ local dlg = create_register_dialog(fields.te_address, te_port_number, server)
dlg:set_parent(tabview)
tabview:hide()
dlg:show()