aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2001-05-02 22:50:01 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2001-05-02 22:50:01 +0200
commit2d2a86ae7990763ce93c342c8557cfec515f7003 (patch)
tree66595ad86dd1a7d6ab653b86a3f4901345e718a5
parent258bfae2f7ab7b1c369fe3343a1132f16396072b (diff)
downloadgcc-2d2a86ae7990763ce93c342c8557cfec515f7003.zip
gcc-2d2a86ae7990763ce93c342c8557cfec515f7003.tar.gz
gcc-2d2a86ae7990763ce93c342c8557cfec515f7003.tar.bz2
tradcpp.c (do_define): Make sure we don't walk past limit.
* tradcpp.c (do_define): Make sure we don't walk past limit. * gcc.dg/cpp/tr-define.c: New test. From-SVN: r41773
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/tr-define.c2
-rw-r--r--gcc/tradcpp.c6
4 files changed, 13 insertions, 3 deletions
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 <jakub@redhat.com>
+
+ * tradcpp.c (do_define): Make sure we don't walk past limit.
+
2000-05-01 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* 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 <jakub@redhat.com>
+
+ * gcc.dg/cpp/tr-define.c: New test.
+
2001-05-01 Loren J. Rittle <ljrittle@acm.org>
* 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);