Skip to content
Snippets Groups Projects
Commit f75276ba authored by John Kessenich's avatar John Kessenich
Browse files

glslang tear down: Include deleting the keyword map in tear down. From johnk...

glslang tear down: Include deleting the keyword map in tear down.  From johnk and sawato shusaku (shusaku.sawato@dmprof.com).

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31115 e7fa87d3-cd2b-0410-9028-fcbf551c1848
parent 6add20a8
No related branches found
No related tags found
No related merge requests found
......@@ -50,13 +50,13 @@ bool InitProcess()
glslang::GetGlobalLock();
if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX) {
//
// Function is re-entrant.
//
//
// Function is re-entrant.
//
glslang::ReleaseGlobalLock();
return true;
}
}
ThreadInitializeIndex = OS_AllocTLSIndex();
......@@ -65,16 +65,16 @@ bool InitProcess()
glslang::ReleaseGlobalLock();
return false;
}
}
if (! InitializePoolIndex()) {
assert(0 && "InitProcess(): Failed to initialize global pool");
glslang::ReleaseGlobalLock();
return false;
}
}
InitThread();
InitThread();
glslang::ReleaseGlobalLock();
return true;
......@@ -83,23 +83,23 @@ bool InitProcess()
bool InitThread()
{
//
//
// This function is re-entrant
//
//
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
assert(0 && "InitThread(): Process hasn't been initalised.");
assert(0 && "InitThread(): Process hasn't been initalised.");
return false;
}
}
if (OS_GetTLSValue(ThreadInitializeIndex) != 0)
return true;
InitializeMemoryPools();
InitializeMemoryPools();
if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) {
assert(0 && "InitThread(): Unable to set init flag.");
assert(0 && "InitThread(): Unable to set init flag.");
return false;
}
}
return true;
}
......@@ -112,18 +112,18 @@ bool DetachThread()
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
return true;
//
// Function is re-entrant and this thread may not have been initalised.
//
//
// Function is re-entrant and this thread may not have been initialized.
//
if (OS_GetTLSValue(ThreadInitializeIndex) != 0) {
if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0)) {
assert(0 && "DetachThread(): Unable to clear init flag.");
assert(0 && "DetachThread(): Unable to clear init flag.");
success = false;
}
}
FreeGlobalPools();
FreeGlobalPools();
}
}
return success;
}
......@@ -139,7 +139,7 @@ bool DetachProcess()
success = DetachThread();
FreePoolIndex();
FreePoolIndex();
OS_FreeTLSIndex(ThreadInitializeIndex);
ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
......
......@@ -514,6 +514,14 @@ void TScanContext::fillInKeywordMap()
ReservedSet->insert("using");
}
void TScanContext::deleteKeywordMap()
{
delete KeywordMap;
KeywordMap = 0;
delete ReservedSet;
ReservedSet = 0;
}
int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
{
do {
......
......@@ -52,6 +52,8 @@ public:
virtual ~TScanContext() { }
static void fillInKeywordMap();
static void deleteKeywordMap();
int tokenize(TPpContext*, TParserToken&);
protected:
......
......@@ -583,7 +583,7 @@ int ShInitialize()
if (! PerProcessGPA)
PerProcessGPA = new TPoolAllocator();
glslang::TScanContext::fillInKeywordMap();
return 1;
......@@ -668,6 +668,8 @@ int __fastcall ShFinalize()
PerProcessGPA = 0;
}
glslang::TScanContext::deleteKeywordMap();
return 1;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment