aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDevang Patel <dpatel@gcc.gnu.org>2003-04-22 12:52:51 -0700
committerDevang Patel <dpatel@gcc.gnu.org>2003-04-22 12:52:51 -0700
commitf945b4e0f5e0b90aa39b74c1bc4f9f5f2f8170ae (patch)
tree29ae547a1ad3c6927d1542311de1a9b3f12eb215 /gcc
parent1067694a52b1cb7b5508c1240cc1d58bc71113d4 (diff)
downloadgcc-f945b4e0f5e0b90aa39b74c1bc4f9f5f2f8170ae.zip
gcc-f945b4e0f5e0b90aa39b74c1bc4f9f5f2f8170ae.tar.gz
gcc-f945b4e0f5e0b90aa39b74c1bc4f9f5f2f8170ae.tar.bz2
cpptrad.c (_cpp_replacement_text_len): Add check for macro parameter count.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cpptrad.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c10
4 files changed, 24 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f2dc8c7..a9df835 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/cpptrad.c b/gcc/cpptrad.c
index f2f94f6..f8923ae 100644
--- a/gcc/cpptrad.c
+++ b/gcc/cpptrad.c
@@ -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;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5f21ec1..3face0f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..f60a6ea
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c
@@ -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)
+