aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorPer Bothner <per@bothner.com>2004-09-29 18:19:46 -0700
committerPer Bothner <bothner@gcc.gnu.org>2004-09-29 18:19:46 -0700
commit67a741463c0555aea1acb65ebe874ad914fd96cf (patch)
tree3f1fe8c9f8d0790aeba0901210cdcacef20a75cd /libcpp
parentfa74d329ecac66b66b0052079d829aef3f6f6dd9 (diff)
downloadgcc-67a741463c0555aea1acb65ebe874ad914fd96cf.zip
gcc-67a741463c0555aea1acb65ebe874ad914fd96cf.tar.gz
gcc-67a741463c0555aea1acb65ebe874ad914fd96cf.tar.bz2
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
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog6
-rw-r--r--libcpp/directives.c4
2 files changed, 10 insertions, 0 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 839b559..86222aa 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,9 @@
+2004-09-29 Per Bothner <per@bothner.com>
+
+ * 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.
+
2004-09-24 Zack Weinberg <zack@codesourcery.com>
* configure.ac: Move AC_PROG_MAKE_SET, AC_PROG_INSTALL to
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;
}