Commit a0469a32 by Richard Kenner

(rescan): Don't address outside of array when preprocessing C++

comments.

From-SVN: r10118
parent d679bebf
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment