re PR preprocessor/34602 (Internal error with invalid #line directive)

libcpp
	PR preprocessor/34602.
	* directives.c (do_line): Don't try to spell EOF token.
	(do_linemarker): Add comment.
gcc/testsuite
	PR preprocessor/34602:
	* gcc.dg/cpp/pr34602.c: New file.

From-SVN: r131304
This commit is contained in:
Tom Tromey 2008-01-03 17:58:26 +00:00 committed by Tom Tromey
parent cac67c0835
commit 33ae48375f
4 changed files with 26 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2008-01-03 Tom Tromey <tromey@redhat.com>
PR preprocessor/34602:
* gcc.dg/cpp/pr34602.c: New file.
2008-01-03 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/29484

View File

@ -0,0 +1,6 @@
/* PR preprocessor/34602 - no internal error trying to spell EOF. */
/* { dg-do preprocess } */
/* { dg-error "unexpected end" "" { target *-*-* } 6 } */
#line

View File

@ -1,3 +1,9 @@
2008-01-03 Tom Tromey <tromey@redhat.com>
PR preprocessor/34602.
* directives.c (do_line): Don't try to spell EOF token.
(do_linemarker): Add comment.
2007-12-11 DJ Delorie <dj@redhat.com>
* charset.c (convert_using_iconv): Close out any shift states,

View File

@ -1,7 +1,7 @@
/* CPP Library. (Directive handling.)
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005,
2007 Free Software Foundation, Inc.
2007, 2008 Free Software Foundation, Inc.
Contributed by Per Bothner, 1994-95.
Based on CCCP program by Paul Rubin, June 1986
Adapted to ANSI C, Richard Stallman, Jan 1987
@ -864,9 +864,12 @@ do_line (cpp_reader *pfile)
|| strtoul_for_line (token->val.str.text, token->val.str.len,
&new_lineno))
{
cpp_error (pfile, CPP_DL_ERROR,
"\"%s\" after #line is not a positive integer",
cpp_token_as_text (pfile, token));
if (token->type == CPP_EOF)
cpp_error (pfile, CPP_DL_ERROR, "unexpected end of file after #line");
else
cpp_error (pfile, CPP_DL_ERROR,
"\"%s\" after #line is not a positive integer",
cpp_token_as_text (pfile, token));
return;
}
@ -920,6 +923,8 @@ do_linemarker (cpp_reader *pfile)
|| strtoul_for_line (token->val.str.text, token->val.str.len,
&new_lineno))
{
/* Unlike #line, there does not seem to be a way to get an EOF
here. So, it should be safe to always spell the token. */
cpp_error (pfile, CPP_DL_ERROR,
"\"%s\" after # is not a positive integer",
cpp_token_as_text (pfile, token));