diff --git a/indra/newview/llsyntaxid.cpp b/indra/newview/llsyntaxid.cpp
index 9e54c521b59c320ba501c2dbf166eb6dd1c67f0b..10a9dee4157bad47f115a3d793c5606a59331557 100644
--- a/indra/newview/llsyntaxid.cpp
+++ b/indra/newview/llsyntaxid.cpp
@@ -50,6 +50,7 @@ LLSyntaxIdLSL::LLSyntaxIdLSL()
 ,	mCapabilityURL(std::string())
 ,	mFilePath(LL_PATH_APP_SETTINGS)
 ,	mSyntaxId(LLUUID())
+,	mInitialized(false)
 {
 	loadDefaultKeywordsIntoLLSD();
 	mRegionChangedCallback = gAgent.addRegionChangedCallback(boost::bind(&LLSyntaxIdLSL::handleRegionChanged, this));
@@ -179,6 +180,7 @@ void LLSyntaxIdLSL::cacheFile(const std::string &fileSpec, const LLSD& content_r
 //-----------------------------------------------------------------------------
 void LLSyntaxIdLSL::initialize()
 {
+	if(mInitialized) return;
 	if (mSyntaxId.isNull())
 	{
 		loadDefaultKeywordsIntoLLSD();
@@ -213,6 +215,7 @@ void LLSyntaxIdLSL::initialize()
 		LL_DEBUGS("SyntaxLSL") << "LSLSyntaxId capability URL is empty." << LL_ENDL;
 		loadDefaultKeywordsIntoLLSD();
 	}
+	mInitialized = true;
 }
 
 //-----------------------------------------------------------------------------
@@ -303,6 +306,7 @@ void LLSyntaxIdLSL::handleRegionChanged()
 	{
 		buildFullFileSpec();
 		fetchKeywordsFile(mFullFileSpec);
+		mInitialized = false;
 	}
 }
 
diff --git a/indra/newview/llsyntaxid.h b/indra/newview/llsyntaxid.h
index 1360b3e042efc43b716d67d5341179ef00714e55..caddba5527949384d333072611edfcad79b1f91c 100644
--- a/indra/newview/llsyntaxid.h
+++ b/indra/newview/llsyntaxid.h
@@ -65,6 +65,7 @@ class LLSyntaxIdLSL : public LLSingleton<LLSyntaxIdLSL>
 	ELLPath			mFilePath;
 	LLUUID			mSyntaxId;
 	LLSD			mKeywordsXml;
+	bool 			mInitialized;
 	
 public:
 	void initialize();