Fix several issues in the preprocessor:
- macro expansion of hexidecimal numbers - give errors instead of warnings/silence on extra tokens after #endif, #else, etc. - give errors on reserved macro name use, reuse of argument, and redefinition with different whitespace presence - detect and give error for all cases of #elif and #else after #else git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23982 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
cfe3ba5a18
commit
4d6570a1b3
14 changed files with 403 additions and 339 deletions
|
|
@ -150,8 +150,12 @@ const char *TPpContext::GetAtomString(int atom)
|
|||
return "<null atom>";
|
||||
if (atom < 0)
|
||||
return "<EOF>";
|
||||
if ((size_t)atom < stringMap.size())
|
||||
return stringMap[atom]->c_str();
|
||||
if ((size_t)atom < stringMap.size()) {
|
||||
if (stringMap[atom] == 0)
|
||||
return "<invalid atom>";
|
||||
else
|
||||
return stringMap[atom]->c_str();
|
||||
}
|
||||
|
||||
return "<invalid atom>";
|
||||
}
|
||||
|
|
@ -163,7 +167,7 @@ int TPpContext::AddAtomFixed(const char *s, int atom)
|
|||
{
|
||||
TAtomMap::const_iterator it = atomMap.insert(std::pair<TString, int>(s, atom)).first;
|
||||
if (stringMap.size() < (size_t)atom + 1)
|
||||
stringMap.resize(atom + 100);
|
||||
stringMap.resize(atom + 100, 0);
|
||||
stringMap[atom] = &it->first;
|
||||
|
||||
return atom;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue