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