summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Serdjuk <dserduk@productengine.com>2009-12-18 17:40:18 +0200
committerDenis Serdjuk <dserduk@productengine.com>2009-12-18 17:40:18 +0200
commita0373dc565589f0a2288707ce353f51114464e96 (patch)
tree019d92f2f6e40870f48bb624d33b52bb6f96b6ac
parenta09c2ba7ac798386b462745774d01c75102beaaf (diff)
fixed critical bug EXT-3559 Crash when deleting last Favorites entry
Cause: An error of invalid array index. Solution: Additional check has been added. --HG-- branch : product-engine
-rw-r--r--indra/newview/llfavoritesbar.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index da0a9727a9..64af1225bf 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -657,7 +657,7 @@ void LLFavoritesBarCtrl::updateButtons()
int first_changed_item_index = 0;
int rightest_point = getRect().mRight - mChevronButton->getRect().getWidth();
//lets find first changed button
- while (child_it != childs->end())
+ while (child_it != childs->end() && first_changed_item_index < mItems.count())
{
LLFavoriteLandmarkButton* button = dynamic_cast<LLFavoriteLandmarkButton*> (*child_it);
if (button)
@@ -675,9 +675,8 @@ void LLFavoritesBarCtrl::updateButtons()
}
// now first_changed_item_index should contains a number of button that need to change
- if (first_changed_item_index < mItems.count())
+ if (first_changed_item_index <= mItems.count())
{
- mUpdateDropDownItems = true;
// Rebuild the buttons only
// child_list_t is a linked list, so safe to erase from the middle if we pre-incrament the iterator
@@ -722,6 +721,10 @@ void LLFavoritesBarCtrl::updateButtons()
// Chevron button
if (mFirstDropDownItem < mItems.count())
{
+ // if updateButton had been called it means:
+ //or there are some new favorites, or width had been changed
+ // so if we need to display chevron button, we must update dropdown items too.
+ mUpdateDropDownItems = true;
S32 buttonHGap = 2; // default value
buttonXMLNode->getAttributeS32("left", buttonHGap);
LLRect rect;