diff options
| author | Hecklezz <tj8@live.com.au> | 2026-07-27 04:29:37 +1000 |
|---|---|---|
| committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2026-07-27 21:23:57 +0300 |
| commit | a0e4f187a5cafa104f3e93797cea64c73710c17c (patch) | |
| tree | 232286671aa6ffb3d78e01d88a475909455f03d5 | |
| parent | e5fbe49ff74f09d6cd982764e7913086e8825423 (diff) | |
Fix LLGroupMgr::removeObserver possibly failing to find and erase observers
| -rw-r--r-- | indra/newview/llgroupmgr.cpp | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index e0da762279..6081b36918 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -869,19 +869,15 @@ void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer) { return; } - observer_multimap_t::iterator it; - it = mObservers.find(observer->getID()); - while (it != mObservers.end()) + observer_multimap_t::iterator it = mObservers.lower_bound(observer->getID()); + observer_multimap_t::iterator end = mObservers.upper_bound(observer->getID()); + for (; it != end; ++it) { if (it->second == observer) { mObservers.erase(it); break; } - else - { - ++it; - } } } |
