PP: Fix issue #407; handle empty identifier.
The sequence #define m() int m" creates a token of no length (a string of 0 size). Protect against a string of 0 size as well as the existing protect against a null string.
This commit is contained in:
parent
7208473c69
commit
11e1a073f3
@ -1,8 +1,10 @@
|
|||||||
cppBad.vert
|
cppBad.vert
|
||||||
ERROR: 0:2: 'preprocessor evaluation' : bad expression
|
ERROR: 0:2: 'preprocessor evaluation' : bad expression
|
||||||
ERROR: 0:2: '#if' : unexpected tokens following directive
|
ERROR: 0:2: '#if' : unexpected tokens following directive
|
||||||
ERROR: 0:3: '' : missing #endif
|
ERROR: 0:5: 'string' : End of line in string
|
||||||
ERROR: 3 compilation errors. No code generated.
|
ERROR: 0:5: 'macro expansion' : expected '(' following n
|
||||||
|
ERROR: 0:5: '' : syntax error
|
||||||
|
ERROR: 5 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 100
|
Shader version: 100
|
||||||
|
|||||||
@ -1,2 +1,5 @@
|
|||||||
#define m#0#
|
#define m#0#
|
||||||
#if m
|
#if m
|
||||||
|
|
||||||
|
#define n()
|
||||||
|
int n"
|
||||||
@ -2,5 +2,5 @@
|
|||||||
// For the version, it uses the latest git tag followed by the number of commits.
|
// For the version, it uses the latest git tag followed by the number of commits.
|
||||||
// For the date, it uses the current date (when then script is run).
|
// For the date, it uses the current date (when then script is run).
|
||||||
|
|
||||||
#define GLSLANG_REVISION "SPIRV99.1373"
|
#define GLSLANG_REVISION "SPIRV99.1374"
|
||||||
#define GLSLANG_DATE "30-Jul-2016"
|
#define GLSLANG_DATE "30-Jul-2016"
|
||||||
|
|||||||
@ -612,13 +612,15 @@ void TScanContext::deleteKeywordMap()
|
|||||||
ReservedSet = nullptr;
|
ReservedSet = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Called by yylex to get the next token.
|
||||||
|
// Returning 0 implies end of input.
|
||||||
int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
|
int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
|
||||||
{
|
{
|
||||||
do {
|
do {
|
||||||
parserToken = &token;
|
parserToken = &token;
|
||||||
TPpToken ppToken;
|
TPpToken ppToken;
|
||||||
tokenText = pp->tokenize(&ppToken);
|
tokenText = pp->tokenize(&ppToken);
|
||||||
if (tokenText == nullptr)
|
if (tokenText == nullptr || tokenText[0] == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
loc = ppToken.loc;
|
loc = ppToken.loc;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user