diff options
author | Ychebotarev ProductEngine <ychebotarev@productengine.com> | 2010-01-29 18:01:02 +0200 |
---|---|---|
committer | Ychebotarev ProductEngine <ychebotarev@productengine.com> | 2010-01-29 18:01:02 +0200 |
commit | 675df36965c346f323bb2025cd832a4dc7c9cdce (patch) | |
tree | cd4f950defd428e37340229013502d8d8ee48c88 /indra/newview/llpanelpeoplemenus.cpp | |
parent | 67d006e404d830931db17814e8da38cc55332152 (diff) | |
parent | 86609394caf1ebb20dd90de37b9af1471ae8aa20 (diff) |
merge
--HG--
branch : product-engine
Diffstat (limited to 'indra/newview/llpanelpeoplemenus.cpp')
-rw-r--r-- | indra/newview/llpanelpeoplemenus.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index 501dac5dff..470cfca8fe 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -61,7 +61,14 @@ ContextMenu::~ContextMenu() // 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(); + + // menu holder deletes its menus on viewer exit, so we have no way to determine if instance + // of mMenu has already been deleted except of using LLHandle. EXT-4762. + if (!mMenuHandle.isDead()) + { + mMenu->die(); + mMenu = NULL; + } } void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y) @@ -86,6 +93,7 @@ void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, std::copy(uuids.begin(), uuids.end(), mUUIDs.begin()); mMenu = createMenu(); + mMenuHandle = mMenu->getHandle(); mMenu->show(x, y); LLMenuGL::showPopup(spawning_view, mMenu, x, y); } |