From 974c43f1e345d10b7dc1c202dbe62caf88b25255 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Thu, 13 Jun 2002 06:25:28 +0000 Subject: cpplib.c (end_directive): Handle line skipping. * cpplib.c (end_directive): Handle line skipping. Only remove the rest of the line if the directive was valid. * cppmacro.c (_cpp_push_text_context): Set NODE_DISABLED when expanding a traditional macro. * cpptrad.c (recursive_macro): New. (read_logical_line_trad): Handle skipping. (scan_out_logical_line): Continue after a successful directive. Don't expand macros whilst skipping, or if recursing. (_cpp_create_trad_definition): scan_out_logical_line now sets the output current position. From-SVN: r54573 --- gcc/cpplib.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'gcc/cpplib.c') diff --git a/gcc/cpplib.c b/gcc/cpplib.c index 73e12b7..acc71e7 100644 --- a/gcc/cpplib.c +++ b/gcc/cpplib.c @@ -256,7 +256,7 @@ end_directive (pfile, skip_line) { if (CPP_OPTION (pfile, traditional)) { - if (pfile->directive == &dtable[T_DEFINE]) + if (!pfile->directive || pfile->directive == &dtable[T_DEFINE]) skip_line = false; else _cpp_remove_overlay (pfile); @@ -290,12 +290,15 @@ prepare_directive_trad (pfile) else { bool no_expand = ! (pfile->directive->flags & EXPAND); + bool was_skipping = pfile->state.skipping; + pfile->state.skipping = false; if (no_expand) pfile->state.prevent_expansion++; _cpp_read_logical_line_trad (pfile); if (no_expand) pfile->state.prevent_expansion--; + pfile->state.skipping = was_skipping; _cpp_overlay_buffer (pfile, pfile->out.base, pfile->out.cur - pfile->out.base); } -- cgit v1.1