* tradcpp.c (do_define): Make sure we don't walk past limit.
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 May 2001 20:50:01 +0000 (20:50 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 May 2001 20:50:01 +0000 (20:50 +0000)
* 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
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/tr-define.c [new file with mode: 0644]
gcc/tradcpp.c

index 83ca906..301de81 100644 (file)
@@ -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
index e99ee84..af464e5 100644 (file)
@@ -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 (file)
index 0000000..54bd7a7
--- /dev/null
@@ -0,0 +1,2 @@
+/* { dg-do preprocess } */
+/* { dg-options "-traditional -DDEFINE1DEFINE -DDEFINE2DEFIN=" } */
index d567473..bfb1202 100644 (file)
@@ -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);