re PR preprocessor/34866 (valgrind error indication in testsuite from errors.c:156...
authorTom Tromey <tromey@redhat.com>
Fri, 18 Apr 2008 00:58:58 +0000 (00:58 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 18 Apr 2008 00:58:58 +0000 (00:58 +0000)
PR libcpp/34866:
* errors.c (cpp_error): Don't reference a token before the start
of the current run.

From-SVN: r134421

libcpp/ChangeLog
libcpp/errors.c

index 0eb632f92f957324bbb21899eeccc4cc59f30f18..0826b628a9bd3feffdabe63fd567348afa6b0ea4 100644 (file)
@@ -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.
index 97de4900001b99bc5f081647614d7fc3f18c3b17..0b7c1e0f458b5caf71a891a9aa51ae4bb30c489f 100644 (file)
@@ -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;