diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 97547208ecc058949a26614b73c35c964fbe8e3c..f82cdc64a9c903ded0e45ded71006da3adc65d34 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -286,7 +286,7 @@ LLButton::~LLButton()
 
 	if (mFlashingTimer)
 	{
-		delete mFlashingTimer;
+		mFlashingTimer->unset();
 	}
 }
 
diff --git a/indra/llui/llflashtimer.cpp b/indra/llui/llflashtimer.cpp
index de7a4ab26580e4a0b5b9bd34a08b46aa9b32f0db..e49628acd59c8a5c424990d742f1c58417d6262f 100644
--- a/indra/llui/llflashtimer.cpp
+++ b/indra/llui/llflashtimer.cpp
@@ -35,6 +35,7 @@ LLFlashTimer::LLFlashTimer(callback_t cb, S32 count, F32 period)
 		, mCurrentTickCount(0)
         , mIsFlashingInProgress(false)
         , mIsCurrentlyHighlighted(false)
+        , mUnset(false)
 {
 	mEventTimer.stop();
 
@@ -48,6 +49,12 @@ LLFlashTimer::LLFlashTimer(callback_t cb, S32 count, F32 period)
 	}
 }
 
+void LLFlashTimer::unset()
+{
+	mUnset = true;
+	mCallback = NULL;
+}
+
 BOOL LLFlashTimer::tick()
 {
 	mIsCurrentlyHighlighted = !mIsCurrentlyHighlighted;
@@ -62,7 +69,7 @@ BOOL LLFlashTimer::tick()
 		stopFlashing();
 	}
 
-	return FALSE;
+	return mUnset;
 }
 
 void LLFlashTimer::startFlashing()
diff --git a/indra/llui/llflashtimer.h b/indra/llui/llflashtimer.h
index 5c8860b0977b70111344c8862ac9c0e228933f6b..c60f99a8eac40650cb01bff70d3709d51d3dfba1 100644
--- a/indra/llui/llflashtimer.h
+++ b/indra/llui/llflashtimer.h
@@ -52,6 +52,11 @@ class LLFlashTimer : public LLEventTimer
 
 	bool isFlashingInProgress();
 	bool isCurrentlyHighlighted();
+	/*
+	 * Use this instead of deleting this object.
+	 * The next call to tick() will return true and that will destroy this object.
+	 */
+	void unset();
 
 private:
 	callback_t		mCallback;
@@ -62,6 +67,7 @@ class LLFlashTimer : public LLEventTimer
 	S32 mCurrentTickCount;
 	bool mIsCurrentlyHighlighted;
 	bool mIsFlashingInProgress;
+	bool mUnset;
 };
 
 #endif /* LL_FLASHTIMER_H */
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index 1b1d61e6d63cc960880dca1d8054314f2fe56f40..40900dce54def53a8b099debc4aa8b4eb4780b4d 100755
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -95,7 +95,7 @@ LLConversationViewSession::~LLConversationViewSession()
 		LLVoiceClient::getInstance()->removeObserver(mVoiceClientObserver);
 	}
 
-	delete mFlashTimer;
+	mFlashTimer->unset();
 }
 
 bool LLConversationViewSession::isHighlightAllowed()