From ed195be9bc97c0e435374d62e8f02e17f0196159 Mon Sep 17 00:00:00 2001 From: zack Date: Wed, 10 May 2000 19:29:20 +0000 Subject: [PATCH] * cppexp.c (lex): Use %.*s to print non-NUL-terminated string. Make error message friendlier. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33829 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 3 +++ gcc/cppexp.c | 4 ++-- gcc/testsuite/gcc.dg/cpp-if4.c | 8 ++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/cpp-if4.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 46a89c2..a942946 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2000-05-10 Zack Weinberg + * 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. diff --git a/gcc/cppexp.c b/gcc/cppexp.c index 00eaea7..7e99292 100644 --- a/gcc/cppexp.c +++ b/gcc/cppexp.c @@ -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; } diff --git a/gcc/testsuite/gcc.dg/cpp-if4.c b/gcc/testsuite/gcc.dg/cpp-if4.c new file mode 100644 index 0000000..84764fb --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp-if4.c @@ -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; -- 2.7.4