mirror of
git://repo.or.cz/tinycc.git
synced 2026-06-17 15:44:18 +08:00
tccpp: Fix #ifdef in macro args
see testcase. We have to "empty" the macro-stack string on end_macro, as it may be 'tokstr_buf' which is going to be used twice in recursive invocations of macro_subst_tok. The uses aren't overlapping but the first one needs to be properly finalized.
This commit is contained in:
parent
1da92cdd93
commit
64f4b00d34
1
tccpp.c
1
tccpp.c
@ -1189,6 +1189,7 @@ ST_FUNC void end_macro(void)
|
||||
macro_stack = str->prev;
|
||||
macro_ptr = str->prev_ptr;
|
||||
file->line_num = str->save_line_num;
|
||||
str->len = 0; /* matters if str not alloced, may be tokstr_buf */
|
||||
if (str->alloc != 0) {
|
||||
if (str->alloc == 2)
|
||||
str->str = NULL; /* don't free */
|
||||
|
||||
12
tests/pp/22.c
Normal file
12
tests/pp/22.c
Normal file
@ -0,0 +1,12 @@
|
||||
#define TRACE(a,b,c) X a X b X c X
|
||||
#define rettrue(x) 1
|
||||
A rettrue(bla) B
|
||||
TRACE(
|
||||
ARG_1,
|
||||
#if rettrue(bla)
|
||||
ARG_2,
|
||||
#else
|
||||
ARG_2_wrong,
|
||||
#endif
|
||||
ARG_3
|
||||
);
|
||||
2
tests/pp/22.expect
Normal file
2
tests/pp/22.expect
Normal file
@ -0,0 +1,2 @@
|
||||
A 1 B
|
||||
X ARG_1 X ARG_2 X ARG_3 X;
|
||||
Loading…
Reference in New Issue
Block a user