Fix memory corruption problem in the preprocessor, removing custom hash-tables/etc. and replacing with std containers.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23623 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich 2013-10-20 18:18:36 +00:00
parent ab3080353a
commit 1f4104fbb1
7 changed files with 172 additions and 957 deletions

View file

@ -122,11 +122,6 @@ int TPpContext::InitScanner(TPpContext *cpp)
return 1;
} // InitScanner
int TPpContext::FreeScanner(void)
{
return (FreeCPP());
}
/*
* str_getch()
* takes care of reading from multiple strings.
@ -386,7 +381,7 @@ int TPpContext::byte_scan(TPpContext* pp, InputSrc *in, TPpToken * yylvalpp)
tokenText[len] = '\0';
pp->currentInput->ungetch(pp, pp->currentInput, ch, yylvalpp);
yylvalpp->atom = pp->LookUpAddString(&pp->atomTable, tokenText);
yylvalpp->atom = pp->LookUpAddString(tokenText);
return CPP_IDENTIFIER;
case '0':
@ -769,7 +764,7 @@ int TPpContext::byte_scan(TPpContext* pp, InputSrc *in, TPpToken * yylvalpp)
};
tokenText[len] = '\0';
if (ch == '"') {
yylvalpp->atom = pp->LookUpAddString(&pp->atomTable, tokenText);
yylvalpp->atom = pp->LookUpAddString(tokenText);
return CPP_STRCONSTANT;
} else {
pp->parseContext.error(yylvalpp->loc, "end of line in string", "string", "");
@ -785,7 +780,7 @@ const char* TPpContext::tokenize(TPpToken* yylvalpp)
for(;;) {
char* tokenString = 0;
const char* tokenString = 0;
token = currentInput->scan(this, currentInput, yylvalpp);
yylvalpp->ppToken = token;
if (check_EOF(token))
@ -813,12 +808,12 @@ const char* TPpContext::tokenize(TPpToken* yylvalpp)
continue;
if (token == CPP_IDENTIFIER)
tokenString = GetStringOfAtom(&atomTable, yylvalpp->atom);
tokenString = GetAtomString(yylvalpp->atom);
else if (token == CPP_INTCONSTANT || token == CPP_UINTCONSTANT ||
token == CPP_FLOATCONSTANT || token == CPP_DOUBLECONSTANT)
tokenString = yylvalpp->name;
else
tokenString = GetStringOfAtom(&atomTable, token);
tokenString = GetAtomString(token);
if (tokenString) {
if (tokenString[0] != 0)