From db3271289d648eac48af18106e27eaaf80d97fc3 Mon Sep 17 00:00:00 2001 From: Guillaume Dupuy Date: Mon, 20 Mar 2017 17:43:50 +0100 Subject: [PATCH] Avoid crashing if interface file is not at the good version --HG-- branch : item_group --- code/ryzom/client/src/item_group_manager.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/code/ryzom/client/src/item_group_manager.cpp b/code/ryzom/client/src/item_group_manager.cpp index bb0049270..f070ccf2e 100644 --- a/code/ryzom/client/src/item_group_manager.cpp +++ b/code/ryzom/client/src/item_group_manager.cpp @@ -203,11 +203,12 @@ void CItemGroupManager::linkInterface() CGroupSubMenu *pMenu = pRootMenu->getRootMenu(); //get item subgroup CGroupMenu *pGroupMenu = dynamic_cast(pWM->getElementFromId("ui:interface:item_menu_in_bag:item_group_menu")); - CGroupSubMenu *pGroupSubMenu = pGroupMenu->getRootMenu(); - if(pMenu && pGroupSubMenu) + CGroupSubMenu *pGroupSubMenu = NULL; + if (pGroupMenu) pGroupSubMenu = pGroupMenu->getRootMenu(); + if (pMenu && pGroupSubMenu) pMenu->setSubMenu(pMenu->getNumLine() - 1, pGroupSubMenu); else - nlwarning("Couldn't link group action to group menu, interface isn't initialize yet ?"); + nlwarning("Couldn't link group submenu to item_menu_in_bag, check your widgets.xml file"); } void CItemGroupManager::uninit() @@ -222,9 +223,10 @@ void CItemGroupManager::unlinkInterface() // We need to unlink our menu to avoid crash on interface release CWidgetManager* pWM = CWidgetManager::getInstance(); CGroupMenu *pGroupMenu = dynamic_cast(pWM->getElementFromId("ui:interface:item_menu_in_bag:item_group_menu")); - CGroupSubMenu *pGroupSubMenu = pGroupMenu->getRootMenu(); - pGroupMenu->reset(); - pGroupMenu->delGroup(pGroupSubMenu, true); + CGroupSubMenu *pGroupSubMenu = NULL; + if (pGroupMenu) pGroupSubMenu = pGroupMenu->getRootMenu(); + if (pGroupMenu) pGroupMenu->reset(); + if (pGroupMenu && pGroupSubMenu) pGroupMenu->delGroup(pGroupSubMenu, true); } // Inspired from macro parsing