(rescan): Don't address outside of array when preprocessing C++
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 11 Jul 1995 00:16:27 +0000 (20:16 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 11 Jul 1995 00:16:27 +0000 (20:16 -0400)
comments.

From-SVN: r10118

gcc/cccp.c

index 065f0578beba3361203b2a8c3554bd78ff7c2cce..5a98ad561ad3e7e20b375846d54ceb071e09dbbf 100644 (file)
@@ -2991,38 +2991,29 @@ do { ip = &instack[indepth];            \
        /* C++ style comment... */
        start_line = ip->lineno;
 
-       --ibp;                  /* Back over the slash */
-       --obp;
-
        /* Comments are equivalent to spaces. */
        if (! put_out_comments)
-         *obp++ = ' ';
-       else {
-         /* must fake up a comment here */
-         *obp++ = '/';
-         *obp++ = '/';
-       }
-       {
-         U_CHAR *before_bp = ibp+2;
+         obp[-1] = ' ';
 
-         while (ibp < limit) {
-           if (ibp[-1] != '\\' && *ibp == '\n') {
-             if (put_out_comments) {
-               bcopy ((char *) before_bp, (char *) obp, ibp - before_bp);
-               obp += ibp - before_bp;
-             }
-             break;
-           } else {
-             if (*ibp == '\n') {
-               ++ip->lineno;
-               /* Copy the newline into the output buffer, in order to
-                  avoid the pain of a #line every time a multiline comment
-                  is seen.  */
-               if (!put_out_comments)
-                 *obp++ = '\n';
-               ++op->lineno;
+       {
+         U_CHAR *before_bp = ibp;
+
+         while (++ibp < limit) {
+           if (*ibp == '\n') {
+             if (ibp[-1] != '\\') {
+               if (put_out_comments) {
+                 bcopy ((char *) before_bp, (char *) obp, ibp - before_bp);
+                 obp += ibp - before_bp;
+               }
+               break;
              }
-             ibp++;
+             ++ip->lineno;
+             /* Copy the newline into the output buffer, in order to
+                avoid the pain of a #line every time a multiline comment
+                is seen.  */
+             if (!put_out_comments)
+               *obp++ = '\n';
+             ++op->lineno;
            }
          }
          break;