aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZack Weinberg <zack@wolery.cumb.org>2000-05-10 19:29:20 +0000
committerZack Weinberg <zack@gcc.gnu.org>2000-05-10 19:29:20 +0000
commite43a157747ca2a71a4a55c16b2bc6299e9a636c8 (patch)
treef3b430924614b3fbd0ba60c6319d5b379b8108b6
parentfa5572714eed920f6d162a1d7ab08d990926ba83 (diff)
downloadgcc-e43a157747ca2a71a4a55c16b2bc6299e9a636c8.zip
gcc-e43a157747ca2a71a4a55c16b2bc6299e9a636c8.tar.gz
gcc-e43a157747ca2a71a4a55c16b2bc6299e9a636c8.tar.bz2
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
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/cppexp.c4
-rw-r--r--gcc/testsuite/gcc.dg/cpp-if4.c8
3 files changed, 13 insertions, 2 deletions
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 <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.
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;