diff options
author | Vadim Savchuk <vsavchuk@productengine.com> | 2009-10-28 15:50:36 +0200 |
---|---|---|
committer | Vadim Savchuk <vsavchuk@productengine.com> | 2009-10-28 15:50:36 +0200 |
commit | 2663bad36b4b02003b4b4c5989c2571c71504cd7 (patch) | |
tree | e0d301fabee6da382f55a86e06db4c466d5a4011 /indra/newview/llinventorymodel.cpp | |
parent | 2bb9751d0aee01b8911f57150fb1e5ea258d7bb4 (diff) | |
parent | ea5a60c80f0243a7e5a6a7fd8357e7c3cd6b5d4d (diff) |
merge from default
--HG--
branch : product-engine
Diffstat (limited to 'indra/newview/llinventorymodel.cpp')
-rw-r--r-- | indra/newview/llinventorymodel.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index d5a527773c..1d7cbde0d5 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -176,12 +176,21 @@ LLInventoryModel::LLInventoryModel() // Destroys the object LLInventoryModel::~LLInventoryModel() { + cleanupInventory(); +} + +void LLInventoryModel::cleanupInventory() +{ empty(); - for (observer_list_t::iterator iter = mObservers.begin(); - iter != mObservers.end(); ++iter) + // Deleting one observer might erase others from the list, so always pop off the front + while (!mObservers.empty()) { - delete *iter; + observer_list_t::iterator iter = mObservers.begin(); + LLInventoryObserver* observer = *iter; + mObservers.erase(iter); + delete observer; } + mObservers.clear(); } // This is a convenience function to check if one object has a parent |