diff --git a/.hgtags b/.hgtags
index a20756b9e7777cbb31c4f6f26951bece0d8c56d9..9f5fc44dd646fecb6671507dd6b26c3bd5f309af 100755
--- a/.hgtags
+++ b/.hgtags
@@ -365,3 +365,4 @@ f1d3b3fcab28ed9ea532bf50db0ba96f5c8cc8e9 DRTVWR-232
 94ab2b49458ab372a95d2d6949fdf574f413068d 3.4.3-beta1
 4c3460cb1fb7c6da9965e09c734d282a8e9c81f0 DRTVWR-229
 f4481df42f9a4a92bf475a80f0c51d1a4bbdfd59 DRTVWR-246
+39c5204b6e800983a41ccac8ad6dc993120197c6 DRTVWR-247
diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
index f5bf900d0da84f71838baa7343c695d25cfbdbdc..28d195d5e9bb3876220cc32a6515c7cca0885833 100644
--- a/indra/newview/llflexibleobject.cpp
+++ b/indra/newview/llflexibleobject.cpp
@@ -96,18 +96,6 @@ LLVolumeImplFlexible::~LLVolumeImplFlexible()
 //static
 void LLVolumeImplFlexible::updateClass()
 {
-	// XXX stinson 11/13/2012 : This hack removes the optimization for limiting the number of flexi-prims
-	// updated.  With the optimization, flexi-prims attached to the users avatar were not being
-	// animated correctly immediately following teleport.  With the optimization removed, the bug went away.
-#define XXX_STINSON_MAINT_1890_HACK_FIX 1
-#if XXX_STINSON_MAINT_1890_HACK_FIX
-	for (std::vector<LLVolumeImplFlexible*>::iterator iter = sInstanceList.begin();
-		iter != sInstanceList.end();
-		++iter)
-	{
-		(*iter)->doIdleUpdate();
-	}
-#else // XXX_STINSON_MAINT_1890_HACK_FIX
 	std::vector<S32>::iterator delay_iter = sUpdateDelay.begin();
 
 	for (std::vector<LLVolumeImplFlexible*>::iterator iter = sInstanceList.begin();
@@ -121,7 +109,6 @@ void LLVolumeImplFlexible::updateClass()
 		}
 		++delay_iter;
 	}
-#endif // XXX_STINSON_MAINT_1890_HACK_FIX
 }
 
 LLVector3 LLVolumeImplFlexible::getFramePosition() const
@@ -373,6 +360,8 @@ void LLVolumeImplFlexible::doIdleUpdate()
 				F32 pixel_area = mVO->getPixelArea();
 
 				U32 update_period = (U32) (LLViewerCamera::getInstance()->getScreenPixelArea()*0.01f/(pixel_area*(sUpdateFactor+1.f)))+1;
+				// MAINT-1890 Clamp the update period to ensure that the update_period is no greater than 32 frames
+				update_period = llclamp(update_period, 0U, 32U);
 
 				if	(visible)
 				{