SL-17772 Crash and a memory leak in LLPanelInventoryListItemBase

1. text_params, not text_aprams, due to this viewer was reusing same params and failing to create mTitleCtrl
2. All ctrls should be owned.
master
Andrey Kleshchev 2022-07-13 22:51:29 +03:00
parent dc5a293eff
commit 620ee989e3
1 changed files with 21 additions and 11 deletions

View File

@ -298,31 +298,41 @@ LLPanelInventoryListItemBase::LLPanelInventoryListItemBase(LLViewerInventoryItem
applyXUILayout(icon_params, this);
mIconCtrl = LLUICtrlFactory::create<LLIconCtrl>(icon_params);
if (mIconCtrl)
{
addChild(mIconCtrl);
}
else
if (!mIconCtrl)
{
LLIconCtrl::Params icon_params;
icon_params.name = "item_icon";
mIconCtrl = LLUICtrlFactory::create<LLIconCtrl>(icon_params);
}
if (mIconCtrl)
{
addChild(mIconCtrl);
}
else
{
LL_ERRS() << "Failed to create mIconCtrl" << LL_ENDL;
}
LLTextBox::Params text_params(params.item_name);
applyXUILayout(text_params, this);
mTitleCtrl = LLUICtrlFactory::create<LLTextBox>(text_params);
if (mTitleCtrl)
if (!mTitleCtrl)
{
addChild(mTitleCtrl);
}
else
{
LLTextBox::Params text_aprams;
LLTextBox::Params text_params;
text_params.name = "item_title";
mTitleCtrl = LLUICtrlFactory::create<LLTextBox>(text_params);
}
if (mTitleCtrl)
{
addChild(mTitleCtrl);
}
else
{
LL_ERRS() << "Failed to create mTitleCtrl" << LL_ENDL;
}
}
class WidgetVisibilityChanger