diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp
index 7f7c24571729686171a15dcc100df3ef68e3424e..b91e407c6dc36734b5696082f5028921936cb4ad 100644
--- a/indra/newview/llviewernetwork.cpp
+++ b/indra/newview/llviewernetwork.cpp
@@ -304,7 +304,12 @@ void LLGridManager::initialize(const std::string& grid_file)
 		addGrid(grid);		
 	}
 
-	gSavedSettings.getControl("CurrentGrid")->getSignal()->connect(boost::bind(&LLGridManager::updateIsInProductionGrid, this));
+	LLControlVariablePtr grid_control = gSavedSettings.getControl("CurrentGrid");
+	if (grid_control.notNull())
+	{
+		grid_control->getSignal()->connect(boost::bind(&LLGridManager::updateIsInProductionGrid, this));
+	}
+
 	// since above only triggers on changes, trigger the callback manually to initialize state
 	updateIsInProductionGrid();
 
@@ -499,7 +504,8 @@ void LLGridManager::setGridChoice(const std::string& grid)
 		addGrid(grid_data);		
 	}
 	mGrid = grid;
-	gSavedSettings.setString("CurrentGrid", grid);
+	gSavedSettings.setString("CurrentGrid", grid); 
+	updateIsInProductionGrid();
 }
 
 std::string LLGridManager::getGridByLabel( const std::string &grid_label, bool case_sensitive)