diff options
author | Tom Tromey <tromey@redhat.com> | 2008-04-18 00:58:58 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2008-04-18 00:58:58 +0000 |
commit | bf048bea9cacd1879017eed0f1ecb1de12c16dee (patch) | |
tree | 5c35a8e5b6fb34788c3fd69310012a174a5fcceb /libcpp | |
parent | 723424c861e1cfc400b5cbe2e89f90d345b7b9b4 (diff) | |
download | gcc-bf048bea9cacd1879017eed0f1ecb1de12c16dee.zip gcc-bf048bea9cacd1879017eed0f1ecb1de12c16dee.tar.gz gcc-bf048bea9cacd1879017eed0f1ecb1de12c16dee.tar.bz2 |
re PR preprocessor/34866 (valgrind error indication in testsuite from errors.c:156:cpp_error with gcc.dg/cpp/Wmissingdirs.c)
PR libcpp/34866:
* errors.c (cpp_error): Don't reference a token before the start
of the current run.
From-SVN: r134421
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/ChangeLog | 6 | ||||
-rw-r--r-- | libcpp/errors.c | 11 |
2 files changed, 16 insertions, 1 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 0eb632f..0826b62 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,9 @@ +2008-04-17 Tom Tromey <tromey@redhat.com> + + PR libcpp/34866: + * errors.c (cpp_error): Don't reference a token before the start + of the current run. + 2008-04-16 Tom Tromey <tromey@redhat.com> * Makefile.in (TAGS_SOURCES): New variable. diff --git a/libcpp/errors.c b/libcpp/errors.c index 97de490..0b7c1e0 100644 --- a/libcpp/errors.c +++ b/libcpp/errors.c @@ -1,6 +1,6 @@ /* Default error handlers for CPP Library. Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998, 1999, 2000, - 2001, 2002, 2004 Free Software Foundation, Inc. + 2001, 2002, 2004, 2008 Free Software Foundation, Inc. Written by Per Bothner, 1994. Based on CCCP program by Paul Rubin, June 1986 Adapted to ANSI C, Richard Stallman, Jan 1987 @@ -151,6 +151,15 @@ cpp_error (cpp_reader * pfile, int level, const char *msgid, ...) else src_loc = pfile->line_table->highest_line; } + /* We don't want to refer to a token before the beginning of the + current run -- that is invalid. */ + else if (pfile->cur_token == pfile->cur_run->base) + { + if (pfile->cur_run->prev != NULL) + src_loc = pfile->cur_run->prev->limit->src_loc; + else + src_loc = 0; + } else { src_loc = pfile->cur_token[-1].src_loc; |