MAINT-4009: Patching the memory leak occurring in the scenario where avatar icon was being created, but the tab container did not have a button to accept the gieven icon.

master
Stinson Linden 2014-05-02 00:32:31 +01:00
parent 827a9f7c2d
commit 8247f51684
1 changed files with 10 additions and 0 deletions

View File

@ -1647,16 +1647,26 @@ void LLTabContainer::setTabImage(LLPanel* child, LLIconCtrl* icon)
{
LLTabTuple* tuple = getTabByPanel(child);
LLCustomButtonIconCtrl* button;
bool hasButton = false;
if(tuple)
{
button = dynamic_cast<LLCustomButtonIconCtrl*>(tuple->mButton);
if(button)
{
hasButton = true;
button->setIcon(icon);
reshapeTuple(tuple);
}
}
if (!hasButton && (icon != NULL))
{
// It was assumed that the tab's button would take ownership of the icon pointer.
// But since the tab did not have a button, kill the icon to prevent the memory
// leak.
icon->die();
}
}
void LLTabContainer::reshapeTuple(LLTabTuple* tuple)