diff options
author | Loren Shih <seraph@lindenlab.com> | 2010-04-28 13:37:21 -0400 |
---|---|---|
committer | Loren Shih <seraph@lindenlab.com> | 2010-04-28 13:37:21 -0400 |
commit | 29e1804139691229a887144b612f147e1c9dcffb (patch) | |
tree | ef7b33360da228b7f2e078dbea5af763c1548230 /indra/newview/llteleporthistory.cpp | |
parent | 26d324a2dd06ebde896f7856622a55414eb75d77 (diff) | |
parent | 96df3f3eb1351973d140ba73b507de44b1052c89 (diff) |
automated merge
Diffstat (limited to 'indra/newview/llteleporthistory.cpp')
-rw-r--r-- | indra/newview/llteleporthistory.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp index dcc85392f7..15684337f4 100644 --- a/indra/newview/llteleporthistory.cpp +++ b/indra/newview/llteleporthistory.cpp @@ -136,6 +136,7 @@ void LLTeleportHistory::updateCurrentLocation(const LLVector3d& new_pos) if (mCurrentItem < 0 || mCurrentItem >= (int) mItems.size()) // sanity check { llwarns << "Invalid current item. (this should not happen)" << llendl; + llassert(!"Invalid current teleport histiry item"); return; } LLVector3 new_pos_local = gAgent.getPosAgentFromGlobal(new_pos); @@ -166,6 +167,17 @@ void LLTeleportHistory::onHistoryChanged() void LLTeleportHistory::purgeItems() { + if (mItems.size() == 0) // no entries yet (we're called before login) + { + // If we don't return here the history will get into inconsistent state, hence: + // 1) updateCurrentLocation() will malfunction, + // so further teleports will not properly update the history; + // 2) mHistoryChangedSignal subscribers will be notified + // of such an invalid change. (EXT-6798) + // Both should not happen. + return; + } + if (mItems.size() > 0) { mItems.erase(mItems.begin(), mItems.end()-1); |