From f945b4e0f5e0b90aa39b74c1bc4f9f5f2f8170ae Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 22 Apr 2003 12:52:51 -0700 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/cpptrad.c | 4 ++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c | 10 ++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f2dc8c7220d..a9df8358136 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ + +2003-04-22 Devang Patel + + * cpptrad.c (_cpp_replacement_text_len): Add check for macro parameter count. + (_cpp_copy_replacement_text): Same. + 2003-04-22 Neil Booth * 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 * config/i386/winnt.c (i386_pe_mark_dllimport): Revert previous diff --git a/gcc/cpptrad.c b/gcc/cpptrad.c index f2f94f6d045..f8923ae8412 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 5f21ec1cdb8..3face0f955d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ + +2003-04-22 Devang Patel + + * gcc.dg/cpp/trad/funlike-5.c: New test. + 2003-04-21 Andreas Tobler * 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 00000000000..f60a6ea7865 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/trad/funlike-5.c @@ -0,0 +1,10 @@ +/* Test function like macro. */ +/* Contributed by Devang Patel */ + +/* {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) + -- 2.30.2