cpptrad.c (_cpp_replacement_text_len): Add check for macro parameter count.
authorDevang Patel <dpatel@gcc.gnu.org>
Tue, 22 Apr 2003 19:52:51 +0000 (12:52 -0700)
committerDevang Patel <dpatel@gcc.gnu.org>
Tue, 22 Apr 2003 19:52:51 +0000 (12:52 -0700)
        * cpptrad.c (_cpp_replacement_text_len): Add check for macro parameter count.
        (_cpp_copy_replacement_text): Same.

        * gcc.dg/cpp/trad/funlike-5.c: New test.

From-SVN: r65952

gcc/ChangeLog
gcc/cpptrad.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c [new file with mode: 0644]

index f2dc8c7220d2b17b8ec9ffc1b6af86bf8781e1ff..a9df835813632d2c0a6f0b698679949fa3d03747 100644 (file)
@@ -1,3 +1,9 @@
+
+2003-04-22  Devang Patel  <dpatel@apple.com>
+
+       * cpptrad.c (_cpp_replacement_text_len): Add check for macro parameter count.
+       (_cpp_copy_replacement_text): Same.
+       
 2003-04-22  Neil Booth  <neil@daikokuya.co.uk>
 
        * c-lex.c (c_lex): Handle CPP_OTHER differently.
@@ -57,6 +63,7 @@
        (note_eh_region_may_contain_throw): New function.
        * except.h (note_eh_region_may_contain_throw): New function.
 
+>>>>>>> 1.17566
 2003-04-21  Mark Mitchell  <mark@codesourcery.com>
 
        * config/i386/winnt.c (i386_pe_mark_dllimport): Revert previous
index f2f94f6d045752da53ebd25fcdf68843e57eac9b..f8923ae841200f4576b24f4f933de1b21a8c15a5 100644 (file)
@@ -761,7 +761,7 @@ _cpp_replacement_text_len (macro)
 {
   size_t len;
 
-  if (macro->fun_like)
+  if (macro->fun_like && (macro->paramc != 0))
     {
       const uchar *exp;
 
@@ -791,7 +791,7 @@ _cpp_copy_replacement_text (macro, dest)
      const cpp_macro *macro;
      uchar *dest;
 {
-  if (macro->fun_like)
+  if (macro->fun_like && (macro->paramc != 0))
     {
       const uchar *exp;
 
index 5f21ec1cdb8ea3448765309e0ccffd9fba134093..3face0f955d9250d367d265f4cc296ef9b03f136 100644 (file)
@@ -1,3 +1,8 @@
+
+2003-04-22  Devang Patel  <dpatel@apple.com>
+
+       * gcc.dg/cpp/trad/funlike-5.c: New test.
+       
 2003-04-21  Andreas Tobler <a.tobler@schweiz.ch>
 
        * g++.dg/other/packed1.C: Fix dg options.
diff --git a/gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c b/gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c
new file mode 100644 (file)
index 0000000..f60a6ea
--- /dev/null
@@ -0,0 +1,10 @@
+/* Test function like macro. */
+/* Contributed by Devang Patel <dpatel@apple.com> */
+
+/* {do-do preprocess } */
+/* { dg-options "-traditional-cpp -E -dD" } */
+int     __srget (char *);
+#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
+#define getc(fp)        __sgetc(fp)
+#define getchar()       getc(stdin)
+