cppexp.c (lex): Use %.*s to print non-NUL-terminated string.

* cppexp.c (lex): Use %.*s to print non-NUL-terminated string.
	Make error message friendlier.

From-SVN: r33829
This commit is contained in:
Zack Weinberg 2000-05-10 19:29:20 +00:00 committed by Zack Weinberg
parent fa5572714e
commit e43a157747
3 changed files with 13 additions and 2 deletions

View File

@ -1,5 +1,8 @@
2000-05-10 Zack Weinberg <zack@wolery.cumb.org>
* cppexp.c (lex): Use %.*s to print non-NUL-terminated string.
Make error message friendlier.
* cpphash.h (struct hashnode): Use struct hack for name
member.
* cpphash.c (struct hashdummy): New.

View File

@ -466,8 +466,8 @@ lex (pfile, skip_evaluation)
&& tok_start[1] == toktab->operator[1])
break;
if (toktab->token == ERROR)
cpp_error (pfile, "'%s' not allowed in operand of #if",
tok_start);
cpp_error (pfile, "'%.*s' is not allowed in #if expressions",
(int) (tok_end - tok_start), tok_start);
op.op = toktab->token;
return op;
}

View File

@ -0,0 +1,8 @@
/* Regression test for proper error message. The token name isn't
NUL terminated, so we would print garbage after it. */
/* { dg-do compile } */
#if 1 += 2 /* { dg-error "'\\+=' is not allowed" "+= in if" } */
syntax_error
#endif
int foo;