directives.c (do_line): Save sysp early before line table is realloc'ed.
authorDevang Patel <dpatel@apple.com>
Mon, 28 Feb 2005 19:04:19 +0000 (11:04 -0800)
committerDevang Patel <dpatel@gcc.gnu.org>
Mon, 28 Feb 2005 19:04:19 +0000 (11:04 -0800)
       * directives.c (do_line): Save sysp early before line table is
       realloc'ed.

From-SVN: r95691

libcpp/ChangeLog
libcpp/directives.c

index 5e6ad28..1f441b1 100644 (file)
@@ -1,3 +1,8 @@
+2005-02-28  Devang Patel  <dpatel@apple.com>
+
+       * directives.c (do_line): Save sysp early before line table is
+       realloc'ed.
+       
 2005-02-20  Zack Weinberg  <zack@codesourcery.com>
 
        PR 18785
index 8a6d45a..8406505 100644 (file)
@@ -775,6 +775,11 @@ do_line (cpp_reader *pfile)
 {
   const struct line_maps *line_table = pfile->line_table;
   const struct line_map *map = &line_table->maps[line_table->used - 1];
+
+  /* skip_rest_of_line() may cause line table to be realloc()ed so note down
+     sysp right now.  */
+
+  unsigned char map_sysp = map->sysp;
   const cpp_token *token;
   const char *new_file = map->to_file;
   unsigned long new_lineno;
@@ -815,7 +820,7 @@ do_line (cpp_reader *pfile)
 
   skip_rest_of_line (pfile);
   _cpp_do_file_change (pfile, LC_RENAME, new_file, new_lineno,
-                      map->sysp);
+                      map_sysp);
 }
 
 /* Interpret the # 44 "file" [flags] notation, which has slightly