Fix macro expansion of empty args.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
This commit is contained in:
		
							parent
							
								
									a6149c6dbb
								
							
						
					
					
						commit
						fb6331e0fa
					
				
					 4 changed files with 14 additions and 2 deletions
				
			
		
							
								
								
									
										2
									
								
								tccpp.c
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								tccpp.c
									
										
									
									
									
								
							| 
						 | 
					@ -2640,7 +2640,7 @@ static int *macro_arg_subst(Sym **nested_list, const int *macro_str, Sym *args)
 | 
				
			||||||
                            tok_str_add2(&str, t1, &cval);
 | 
					                            tok_str_add2(&str, t1, &cval);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                } else {
 | 
					                } else if (*st != TOK_PLCHLDR) {
 | 
				
			||||||
                    /* NOTE: the stream cannot be read when macro
 | 
					                    /* NOTE: the stream cannot be read when macro
 | 
				
			||||||
                       substituing an argument */
 | 
					                       substituing an argument */
 | 
				
			||||||
                    macro_subst(&str, nested_list, st, NULL);
 | 
					                    macro_subst(&str, nested_list, st, NULL);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								tests/tests2/71_macro_empty_arg.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								tests/tests2/71_macro_empty_arg.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define T(a,b,c) a b c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    printf("%d", T(1,+,2) T(+,,) T(,2,*) T(,7,) T(,,));
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								tests/tests2/71_macro_empty_arg.expect
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/tests2/71_macro_empty_arg.expect
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					17
 | 
				
			||||||
| 
						 | 
					@ -89,7 +89,9 @@ TESTS =	\
 | 
				
			||||||
 67_macro_concat.test \
 | 
					 67_macro_concat.test \
 | 
				
			||||||
 68_macro_param_list_err_1.test \
 | 
					 68_macro_param_list_err_1.test \
 | 
				
			||||||
 69_macro_param_list_err_2.test \
 | 
					 69_macro_param_list_err_2.test \
 | 
				
			||||||
 70_floating_point_literals.test
 | 
					 70_floating_point_literals.test \
 | 
				
			||||||
 | 
					 71_macro_empty_arg.test \
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 34_array_assignment.test -- array assignment is not in C standard
 | 
					# 34_array_assignment.test -- array assignment is not in C standard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue