diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2025-01-02 23:08:38 +0200 | 
|---|---|---|
| committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2025-01-03 19:11:56 +0200 | 
| commit | 85162a4f609efaf3aa7412c6cd422f3900ba0cb3 (patch) | |
| tree | 4f06cf24c420b39e1d3008f107f7796c3bdec8e1 | |
| parent | a259316dc6212744194f340246b840e0a42b0191 (diff) | |
#3302 Crash at LLSaveFolderState::doFolder
| -rw-r--r-- | indra/newview/llpanelcontents.cpp | 25 | 
1 files changed, 19 insertions, 6 deletions
| diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp index 2624ef1207..7910bcb41d 100644 --- a/indra/newview/llpanelcontents.cpp +++ b/indra/newview/llpanelcontents.cpp @@ -145,6 +145,7 @@ void LLPanelContents::onFilterEdit()      }      else      { +        LLFolderView* root_folder = mPanelInventoryObject->getRootFolder();          if (filter_substring.empty())          {              if (mPanelInventoryObject->getFilter().getFilterSubString().empty()) @@ -155,19 +156,28 @@ void LLPanelContents::onFilterEdit()              if (mDirtyFilter && !mSavedFolderState.hasOpenFolders())              { -                mPanelInventoryObject->getRootFolder()->setOpenArrangeRecursively(true, LLFolderViewFolder::ERecurseType::RECURSE_DOWN); +                if (root_folder) +                { +                    root_folder->setOpenArrangeRecursively(true, LLFolderViewFolder::ERecurseType::RECURSE_DOWN); +                }              }              else              {                  mSavedFolderState.setApply(true); -                mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState); +                if (root_folder) +                { +                    root_folder->applyFunctorRecursively(mSavedFolderState); +                }              }              mDirtyFilter = false;              // Add a folder with the current item to the list of previously opened folders -            LLOpenFoldersWithSelection opener; -            mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(opener); -            mPanelInventoryObject->getRootFolder()->scrollToShowSelection(); +            if (root_folder) +            { +                LLOpenFoldersWithSelection opener; +                root_folder->applyFunctorRecursively(opener); +                root_folder->scrollToShowSelection(); +            }          }          else if (mPanelInventoryObject->getFilter().getFilterSubString().empty())          { @@ -175,7 +185,10 @@ void LLPanelContents::onFilterEdit()              if (!mPanelInventoryObject->getFilter().isNotDefault())              {                  mSavedFolderState.setApply(false); -                mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState); +                if (root_folder) +                { +                    root_folder->applyFunctorRecursively(mSavedFolderState); +                }                  mDirtyFilter = false;              }          } | 
