Fixed critical bug EXT-4725 (Viewer crashes if try to call from 'Nearby voice' floater)

- reason: LLContextMenu was not not deleted when LLPanelPeopleMenus::ContextMenu was destroyed.
    Associated callbacks were called by Menu Holder for last selected menu_item_call for destroyed LLParticipantList::LLParticipantListMenu
- fix: added destruction of LLContextMenu when LLPanelPeopleMenus::ContextMenu is destructed.

--HG--
branch : product-engine
master
Mike Antipov 2010-01-27 14:24:37 +02:00
parent 684cfb722e
commit b68ccadd46
2 changed files with 10 additions and 1 deletions

View File

@ -55,6 +55,15 @@ ContextMenu::ContextMenu()
{
}
ContextMenu::~ContextMenu()
{
// do not forget delete LLContextMenu* mMenu.
// It can have registered Enable callbacks which are called from the LLMenuHolderGL::draw()
// via selected item (menu_item_call) by calling LLMenuItemCallGL::buildDrawLabel.
// we can have a crash via using callbacks of deleted instance of ContextMenu. EXT-4725
if (mMenu) mMenu->die();
}
void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y)
{
if (mMenu)

View File

@ -45,7 +45,7 @@ class ContextMenu : public LLAvatarListItem::ContextMenu
{
public:
ContextMenu();
virtual ~ContextMenu() {}
virtual ~ContextMenu();
/**
* Show the menu at specified coordinates.