From 5c20641d435b29e081e68456ed8ded96e05b9bb9 Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 2 May 2001 20:50:01 +0000 Subject: [PATCH] * tradcpp.c (do_define): Make sure we don't walk past limit. * gcc.dg/cpp/tr-define.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41773 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/cpp/tr-define.c | 2 ++ gcc/tradcpp.c | 6 +++--- 4 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/cpp/tr-define.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 83ca906..301de81 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2001-05-02 Jakub Jelinek + + * tradcpp.c (do_define): Make sure we don't walk past limit. + 2000-05-01 Franz Sirl * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow any stack diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e99ee84..af464e5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-05-02 Jakub Jelinek + + * gcc.dg/cpp/tr-define.c: New test. + 2001-05-01 Loren J. Rittle * g++.old-deja/g++.abi/cxa_vec.C: Get malloc() from diff --git a/gcc/testsuite/gcc.dg/cpp/tr-define.c b/gcc/testsuite/gcc.dg/cpp/tr-define.c new file mode 100644 index 0000000..54bd7a7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/tr-define.c @@ -0,0 +1,2 @@ +/* { dg-do preprocess } */ +/* { dg-options "-traditional -DDEFINE1DEFINE -DDEFINE2DEFIN=" } */ diff --git a/gcc/tradcpp.c b/gcc/tradcpp.c index d567473..bfb1202 100644 --- a/gcc/tradcpp.c +++ b/gcc/tradcpp.c @@ -2670,8 +2670,8 @@ do_define (buf, limit, op) } } - ++bp; /* skip paren */ - while (is_nvspace (*bp)) /* and leading whitespace */ + ++bp; /* skip paren */ + while (is_nvspace (*bp) && bp < limit) /* and leading whitespace */ ++bp; /* now everything from bp before limit is the definition. */ defn = collect_expansion (bp, limit, argno, arg_ptrs); @@ -2698,7 +2698,7 @@ do_define (buf, limit, op) } } else { /* simple expansion or empty definition; skip leading whitespace */ - while (is_nvspace (*bp)) + while (is_nvspace (*bp) && bp < limit) ++bp; /* now everything from bp before limit is the definition. */ defn = collect_expansion (bp, limit, -1, 0); -- 2.7.4