From 67a741463c0555aea1acb65ebe874ad914fd96cf Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Wed, 29 Sep 2004 18:19:46 -0700 Subject: directives.c (cpp_handle_deferred_pragma): Save, clear and restore cb.line_change. * directives.c (cpp_handle_deferred_pragma): Save, clear and restore cb.line_change. Otherwise do_pragma will call the line_change call-back with a meaningless line number. From-SVN: r88320 --- libcpp/directives.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libcpp/directives.c') diff --git a/libcpp/directives.c b/libcpp/directives.c index 49f95ca..b60b7bc 100644 --- a/libcpp/directives.c +++ b/libcpp/directives.c @@ -1419,10 +1419,13 @@ cpp_handle_deferred_pragma (cpp_reader *pfile, const cpp_string *s) cpp_token *saved_cur_token = pfile->cur_token; tokenrun *saved_cur_run = pfile->cur_run; bool saved_defer_pragmas = CPP_OPTION (pfile, defer_pragmas); + void (*saved_line_change) (cpp_reader *, const cpp_token *, int) + = pfile->cb.line_change; pfile->context = XNEW (cpp_context); pfile->context->macro = 0; pfile->context->prev = 0; + pfile->cb.line_change = NULL; CPP_OPTION (pfile, defer_pragmas) = false; run_directive (pfile, T_PRAGMA, s->text, s->len); @@ -1431,6 +1434,7 @@ cpp_handle_deferred_pragma (cpp_reader *pfile, const cpp_string *s) pfile->context = saved_context; pfile->cur_token = saved_cur_token; pfile->cur_run = saved_cur_run; + pfile->cb.line_change = saved_line_change; CPP_OPTION (pfile, defer_pragmas) = saved_defer_pragmas; } -- cgit v1.1