cpplex.c (skip_block_comment): Use pointer arithmetic rather than GETC ().

* cpplex.c (skip_block_comment): Use pointer arithmetic rather
	than GETC ().
	* cpphash.h: (CPP_BUMP_BUFFER_LINE_CUR, CPP_BUMP_LINE_CUR): New.

From-SVN: r33052
This commit is contained in:
Neil Booth 2000-04-10 11:08:12 +00:00 committed by Neil Booth
parent 775afb2516
commit 61474454b4
3 changed files with 36 additions and 16 deletions

View File

@ -1,3 +1,9 @@
2000-04-10 Neil Booth <NeilB@earthling.net>
* cpplex.c (skip_block_comment): Use pointer arithmetic rather
than GETC ().
* cpphash.h: (CPP_BUMP_BUFFER_LINE_CUR, CPP_BUMP_LINE_CUR): New.
2000-04-10 Martin v. Löwis <loewis@informatik.hu-berlin.de>
* invoke.texi (-fno-gnu-keywords): Remove classof, headof,
@ -23561,3 +23567,5 @@ Wed May 19 00:34:40 1999 Jeffrey A Law (law@cygnus.com)
gcc-2.95 branch.
See ChangeLog.1 for earlier changes.

View File

@ -221,6 +221,10 @@ extern unsigned char _cpp_IStable[256];
#define CPP_BUMP_BUFFER_LINE(PBUF) ((PBUF)->lineno++,\
(PBUF)->line_base = (PBUF)->cur)
#define CPP_BUMP_LINE(PFILE) CPP_BUMP_BUFFER_LINE(CPP_BUFFER(PFILE))
#define CPP_BUMP_BUFFER_LINE_CUR(PBUF, CUR) ((PBUF)->lineno++,\
(PBUF)->line_base = CUR)
#define CPP_BUMP_LINE_CUR(PFILE, CUR) \
CPP_BUMP_BUFFER_LINE_CUR(CPP_BUFFER(PFILE), CUR)
#define CPP_PREV_BUFFER(BUFFER) ((BUFFER)->prev)
/* Are we in column 1 right now? Used mainly for -traditional handling

View File

@ -248,33 +248,41 @@ static void
skip_block_comment (pfile)
cpp_reader *pfile;
{
int c, prev_c = -1;
long line, col;
const U_CHAR *limit, *cur;
FORWARD(1);
cpp_buf_line_and_col (CPP_BUFFER (pfile), &line, &col);
for (;;)
limit = CPP_BUFFER (pfile)->rlimit;
cur = CPP_BUFFER (pfile)->cur;
while (cur < limit)
{
c = GETC ();
if (c == EOF)
{
cpp_error_with_line (pfile, line, col, "unterminated comment");
return;
}
else if (c == '\n' || c == '\r')
char c = *cur++;
if (c == '\n' || c == '\r')
{
/* \r cannot be a macro escape marker here. */
if (!ACTIVE_MARK_P (pfile))
CPP_BUMP_LINE (pfile);
CPP_BUMP_LINE_CUR (pfile, cur);
}
else if (c == '/' && prev_c == '*')
return;
else if (c == '*' && prev_c == '/'
&& CPP_OPTION (pfile, warn_comments))
cpp_warning (pfile, "`/*' within comment");
else if (c == '*')
{
/* Check for teminator. */
if (cur < limit && *cur == '/')
goto out;
prev_c = c;
/* Warn about comment starter embedded in comment. */
if (cur[-2] == '/' && CPP_OPTION (pfile, warn_comments))
cpp_warning_with_line (pfile, CPP_BUFFER (pfile)->lineno,
cur - CPP_BUFFER (pfile)->line_base,
"'/*' within comment");
}
}
cpp_error_with_line (pfile, line, col, "unterminated comment");
cur--;
out:
CPP_BUFFER (pfile)->cur = cur + 1;
}
/* Skip a C++/Chill line comment. We know it's a comment, and point