diff options
author | Doug Evans <dje@gnu.org> | 1994-06-21 18:35:15 +0000 |
---|---|---|
committer | Doug Evans <dje@gnu.org> | 1994-06-21 18:35:15 +0000 |
commit | e24d9a314466dac1d70e1f9b1a6377a9a6bf5c88 (patch) | |
tree | db8541855002dd047eccaf6fe4915d05ab034367 /gcc | |
parent | e5b3d86a4392f165037dee50f82979db3652c0d7 (diff) | |
download | gcc-e24d9a314466dac1d70e1f9b1a6377a9a6bf5c88.zip gcc-e24d9a314466dac1d70e1f9b1a6377a9a6bf5c88.tar.gz gcc-e24d9a314466dac1d70e1f9b1a6377a9a6bf5c88.tar.bz2 |
(skip_to_end_of_comment): Catch unterminated comments.
From-SVN: r7525
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cccp.c | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -7234,7 +7234,8 @@ validate_else (p) If NOWARN is nonzero, don't warn about slash-star inside a comment. This feature is useful when processing a comment that is going to be processed or was processed at another point in the preprocessor, - to avoid a duplicate warning. */ + to avoid a duplicate warning. Likewise for unterminated comment errors. */ + static U_CHAR * skip_to_end_of_comment (ip, line_counter, nowarn) register FILE_BUF *ip; @@ -7245,6 +7246,7 @@ skip_to_end_of_comment (ip, line_counter, nowarn) register U_CHAR *bp = ip->bufp; FILE_BUF *op = &outbuf; /* JF */ int output = put_out_comments && !line_counter; + int start_line = line_counter ? *line_counter : 0; /* JF this line_counter stuff is a crock to make sure the comment is only put out once, no matter how many times @@ -7291,6 +7293,15 @@ skip_to_end_of_comment (ip, line_counter, nowarn) warning ("`/*' within comment"); break; case '\n': + /* If this is the end of the file, we have an unterminated comment. + Don't swallow the newline. We are guaranteed that there will be a + trailing newline and various pieces assume it's there. */ + if (bp == limit) + { + --bp; + --limit; + break; + } if (line_counter != NULL) ++*line_counter; if (output) @@ -7308,6 +7319,9 @@ skip_to_end_of_comment (ip, line_counter, nowarn) break; } } + + if (!nowarn) + error_with_line (line_for_error (start_line), "unterminated comment"); ip->bufp = bp; return bp; } |