diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp
index c0b072c357e71d390cc10b4e831cb647afedc2c5..b1fc20bf327a158a613dd9bba0ec5e29f064eea1 100644
--- a/indra/llcharacter/llmotioncontroller.cpp
+++ b/indra/llcharacter/llmotioncontroller.cpp
@@ -427,9 +427,10 @@ void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_ty
 
 	// iterate through active motions in chronological order
 	for (motion_list_t::iterator iter = mActiveMotions.begin();
-		 iter != mActiveMotions.end(); ++iter)
+		 iter != mActiveMotions.end(); )
 	{
-		LLMotion* motionp = *iter;
+		motion_list_t::iterator curiter = iter++;
+		LLMotion* motionp = *curiter;
 		if (motionp->getBlendType() != anim_type)
 		{
 			continue;
@@ -842,9 +843,10 @@ void LLMotionController::flushAllMotions()
 	std::vector<std::pair<LLUUID,F32> > active_motions;
 	active_motions.reserve(mActiveMotions.size());
 	for (motion_list_t::iterator iter = mActiveMotions.begin();
-		 iter != mActiveMotions.end(); ++iter)
+		 iter != mActiveMotions.end(); )
 	{
-		LLMotion* motionp = *iter;
+		motion_list_t::iterator curiter = iter++;
+		LLMotion* motionp = *curiter;
 		F32 dtime = mTime - motionp->mActivationTimestamp;
 		active_motions.push_back(std::make_pair(motionp->getID(),dtime));
 		motionp->deactivate();