fixed zero arg macro parse
This commit is contained in:
		
							parent
							
								
									e58bda52cd
								
							
						
					
					
						commit
						638e666c42
					
				
					 2 changed files with 7 additions and 1 deletions
				
			
		
							
								
								
									
										2
									
								
								tcc.c
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								tcc.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -3812,7 +3812,7 @@ static int macro_subst_tok(TokenString *tok_str,
 | 
			
		|||
            /* NOTE: empty args are allowed, except if no args */
 | 
			
		||||
            for(;;) {
 | 
			
		||||
                /* handle '()' case */
 | 
			
		||||
                if (!args && tok == ')')
 | 
			
		||||
                if (!args && !sa && tok == ')')
 | 
			
		||||
                    break;
 | 
			
		||||
                if (!sa)
 | 
			
		||||
                    error("macro '%s' used with too many args",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -253,6 +253,12 @@ void macro_test(void)
 | 
			
		|||
    /* test macro substituion inside args (should not eat stream) */
 | 
			
		||||
    printf("qq=%d\n", qq(qq)(2));
 | 
			
		||||
 | 
			
		||||
    /* test zero argument case. NOTE: gcc 2.95.x does not accept a
 | 
			
		||||
       null argument without a space. gcc 3.2 fixes that. */
 | 
			
		||||
 | 
			
		||||
#define qq1(x) 1
 | 
			
		||||
    printf("qq1=%d\n", qq1( ));
 | 
			
		||||
 | 
			
		||||
    /* comment with stray handling *\
 | 
			
		||||
/
 | 
			
		||||
       /* this is a valid *\/ comment */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue