From 1ea4b16c8b2fe99f7faa316a1c5c2dc978a578f5 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Tue, 23 Aug 2022 19:12:50 +1000 Subject: [PATCH] fix(client/interface): set openMenu to nil before triggering callbacks Callbacks may open another menu, which then gets set to nil after the callback has returned. --- resource/interface/client/menu.lua | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/resource/interface/client/menu.lua b/resource/interface/client/menu.lua index 9d746a2..b330158 100644 --- a/resource/interface/client/menu.lua +++ b/resource/interface/client/menu.lua @@ -55,11 +55,13 @@ local function resetFocus() end function lib.hideMenu(onExit) - if onExit and openMenu.onClose then - openMenu.onClose() + local menu = openMenu + openMenu = nil + + if onExit and menu.onClose then + menu.onClose() end - openMenu = nil resetFocus() SendNUIMessage({ action = 'closeMenu' @@ -84,15 +86,17 @@ RegisterNUICallback('confirmSelected', function(data, cb) data[2] += 1 -- scrollIndex end - if openMenu.options[data[1]].close ~= false then + local menu = openMenu + openMenu = nil + + if menu.options[data[1]].close ~= false then resetFocus() end - if openMenu.cb then - openMenu.cb(data[1], data[2], openMenu.options[data[1]].args) + if menu.cb then + menu.cb(data[1], data[2], menu.options[data[1]].args) end - openMenu = nil end) RegisterNUICallback('changeIndex', function(data, cb) @@ -125,9 +129,10 @@ RegisterNUICallback('closeMenu', function(data, cb) cb(1) resetFocus() - if openMenu.onClose then - openMenu.onClose() - end - + local menu = openMenu openMenu = nil + + if menu.onClose then + menu.onClose() + end end)