From a661367644cee230637e7ee974f49f6b81f4ff8e Mon Sep 17 00:00:00 2001
From: Mnikolenko Productengine <mnikolenko@productengine.com>
Date: Wed, 25 Jan 2017 11:31:22 +0200
Subject: [PATCH] MAINT-7056 Viewer crash when opening many scripts.

---
 indra/newview/llsyntaxid.cpp | 4 ++++
 indra/newview/llsyntaxid.h   | 1 +
 2 files changed, 5 insertions(+)

diff --git a/indra/newview/llsyntaxid.cpp b/indra/newview/llsyntaxid.cpp
index 9e54c521b59..10a9dee4157 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 1360b3e042e..caddba55279 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();
-- 
GitLab