Skip to content

Commit bb34e76

Browse files
committed
fix(menus): Temporary Menu Crash
1 parent f375999 commit bb34e76

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/menus/MenuManager.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
#include "../player/PlayerManager.h"
44

5+
std::map<std::string, bool> scheduledForDelete;
6+
57
MenuManager::MenuManager()
68
{
79
}
@@ -23,7 +25,10 @@ void MenuManager::UnregisterMenu(std::string id)
2325
{
2426
if (this->menu_ids.find(id) == this->menu_ids.end())
2527
return;
28+
if (scheduledForDelete.find(id) != scheduledForDelete.end())
29+
return;
2630

31+
scheduledForDelete.insert({id, true});
2732
for (uint16_t i = 0; i < g_playerManager->GetPlayerCap(); i++)
2833
{
2934
Player *player = g_playerManager->GetPlayer(i);
@@ -34,14 +39,14 @@ void MenuManager::UnregisterMenu(std::string id)
3439
if (!player->HasMenuShown())
3540
continue;
3641

37-
if(player->GetMenu())
38-
if (player->GetMenu()->GetID() == id)
39-
player->HideMenu();
42+
if (player->GetMenu()->GetID() == id)
43+
player->HideMenu();
4044
}
4145

4246
Menu *menu = this->menu_ids.at(id);
4347
delete menu;
4448
this->menu_ids.erase(id);
49+
scheduledForDelete.erase(id);
4550
}
4651

4752
Menu *MenuManager::FetchMenu(std::string menu_id)

0 commit comments

Comments
 (0)