From 6710b60b104a119b91ffc468424f8c8fe25ef2da Mon Sep 17 00:00:00 2001
From: William Todd Stinson <stinson@lindenlab.com>
Date: Mon, 17 Dec 2012 13:17:00 -0800
Subject: [PATCH] MAINT-2134: Removing llassert() calls that were causing
 problems with the Debug and RelWithDebInfo builds.  Also, reworked the rest
 of the methods to only apply in cases where the class instance has been
 initialized.

---
 .../llmenuoptionpathfindingrebakenavmesh.cpp  | 82 ++++++++++---------
 1 file changed, 44 insertions(+), 38 deletions(-)

diff --git a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp
index dd5f1ea6891..bf4f4bceed3 100644
--- a/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp
+++ b/indra/newview/llmenuoptionpathfindingrebakenavmesh.cpp
@@ -54,23 +54,21 @@ LLMenuOptionPathfindingRebakeNavmesh::LLMenuOptionPathfindingRebakeNavmesh()
 
 LLMenuOptionPathfindingRebakeNavmesh::~LLMenuOptionPathfindingRebakeNavmesh() 
 {
-	if (mRebakeNavMeshMode == kRebakeNavMesh_RequestSent)
-	{
-		LL_WARNS("navmeshRebaking") << "During destruction of the LLMenuOptionPathfindingRebakeNavmesh "
-			<< "singleton, the mode indicates that a request has been sent for which a response has yet "
-			<< "to be received.  This could contribute to a crash on exit." << LL_ENDL;
-	}
-
-	llassert(!mIsInitialized);
 	if (mIsInitialized)
 	{
+		if (mRebakeNavMeshMode == kRebakeNavMesh_RequestSent)
+		{
+			LL_WARNS("navmeshRebaking") << "During destruction of the LLMenuOptionPathfindingRebakeNavmesh "
+				<< "singleton, the mode indicates that a request has been sent for which a response has yet "
+				<< "to be received.  This could contribute to a crash on exit." << LL_ENDL;
+		}
+
 		quit();
 	}
 }
 
 void LLMenuOptionPathfindingRebakeNavmesh::initialize()
 {
-	llassert(!mIsInitialized);
 	if (!mIsInitialized)
 	{
 		mIsInitialized = true;
@@ -94,7 +92,6 @@ void LLMenuOptionPathfindingRebakeNavmesh::initialize()
 
 void LLMenuOptionPathfindingRebakeNavmesh::quit()
 {
-	llassert(mIsInitialized);
 	if (mIsInitialized)
 	{
 		if (mNavMeshSlot.connected())
@@ -175,51 +172,60 @@ void LLMenuOptionPathfindingRebakeNavmesh::handleAgentState(BOOL pCanRebakeRegio
 void LLMenuOptionPathfindingRebakeNavmesh::handleRebakeNavMeshResponse(bool pResponseStatus)
 {
 	llassert(mIsInitialized);
-	if (getMode() == kRebakeNavMesh_RequestSent)
+	if (mIsInitialized)
 	{
-		setMode(pResponseStatus ? kRebakeNavMesh_InProgress : kRebakeNavMesh_Default);
-	}
+		if (getMode() == kRebakeNavMesh_RequestSent)
+		{
+			setMode(pResponseStatus ? kRebakeNavMesh_InProgress : kRebakeNavMesh_Default);
+		}
 
-	if (!pResponseStatus)
-	{
-		LLNotificationsUtil::add("PathfindingCannotRebakeNavmesh");
+		if (!pResponseStatus)
+		{
+			LLNotificationsUtil::add("PathfindingCannotRebakeNavmesh");
+		}
 	}
 }
 
 void LLMenuOptionPathfindingRebakeNavmesh::handleNavMeshStatus(const LLPathfindingNavMeshStatus &pNavMeshStatus)
 {
 	llassert(mIsInitialized);
-	ERebakeNavMeshMode rebakeNavMeshMode = kRebakeNavMesh_Default;
-	if (pNavMeshStatus.isValid())
+	if (mIsInitialized)
 	{
-		switch (pNavMeshStatus.getStatus())
+		ERebakeNavMeshMode rebakeNavMeshMode = kRebakeNavMesh_Default;
+		if (pNavMeshStatus.isValid())
 		{
-		case LLPathfindingNavMeshStatus::kPending :
-		case LLPathfindingNavMeshStatus::kRepending :
-			rebakeNavMeshMode = kRebakeNavMesh_Available;
-			break;
-		case LLPathfindingNavMeshStatus::kBuilding :
-			rebakeNavMeshMode = kRebakeNavMesh_InProgress;
-			break;
-		case LLPathfindingNavMeshStatus::kComplete :
-			rebakeNavMeshMode = kRebakeNavMesh_NotAvailable;
-			break;
-		default : 
-			rebakeNavMeshMode = kRebakeNavMesh_Default;
-			llassert(0);
-			break;
+			switch (pNavMeshStatus.getStatus())
+			{
+			case LLPathfindingNavMeshStatus::kPending :
+			case LLPathfindingNavMeshStatus::kRepending :
+				rebakeNavMeshMode = kRebakeNavMesh_Available;
+				break;
+			case LLPathfindingNavMeshStatus::kBuilding :
+				rebakeNavMeshMode = kRebakeNavMesh_InProgress;
+				break;
+			case LLPathfindingNavMeshStatus::kComplete :
+				rebakeNavMeshMode = kRebakeNavMesh_NotAvailable;
+				break;
+			default : 
+				rebakeNavMeshMode = kRebakeNavMesh_Default;
+				llassert(0);
+				break;
+			}
 		}
-	}
 
-	setMode(rebakeNavMeshMode);
+		setMode(rebakeNavMeshMode);
+	}
 }
 
 void LLMenuOptionPathfindingRebakeNavmesh::handleRegionBoundaryCrossed()
 {
 	llassert(mIsInitialized);
-	createNavMeshStatusListenerForCurrentRegion();
-	mCanRebakeRegion = FALSE;
-	LLPathfindingManager::getInstance()->requestGetAgentState();
+	if (mIsInitialized)
+	{
+		createNavMeshStatusListenerForCurrentRegion();
+		mCanRebakeRegion = FALSE;
+		LLPathfindingManager::getInstance()->requestGetAgentState();
+	}
 }
 
 void LLMenuOptionPathfindingRebakeNavmesh::createNavMeshStatusListenerForCurrentRegion()
-- 
GitLab