diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cpplex.c | 8 | ||||
-rw-r--r-- | gcc/cpptrad.c | 3 |
3 files changed, 15 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 40d0068..96c2954 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-08-28 Per Bothner <per@bothner.com> + + Fix (hopefully temporary) for breakage caused by my 08-21 patch. + * cpplex.c (_cpp_get_fresh_line): Check for null buffer. + (_cpp_lex_buffer): Likewise. + * cpptrad.c (_cpp_read_logical_line_trad): Likewise. + 2003-08-28 Ulrich Weigand <uweigand@de.ibm.com> * config/s390/s390.md ("*mulsi3_sign"): New insn. diff --git a/gcc/cpplex.c b/gcc/cpplex.c index 1c00bdd..f779dfb 100644 --- a/gcc/cpplex.c +++ b/gcc/cpplex.c @@ -694,6 +694,9 @@ _cpp_get_fresh_line (cpp_reader *pfile) { cpp_buffer *buffer = pfile->buffer; + if (buffer == NULL) + return false; + if (!buffer->need_line) return true; @@ -759,7 +762,8 @@ _cpp_lex_direct (cpp_reader *pfile) fresh_line: result->flags = 0; - if (pfile->buffer->need_line) + buffer = pfile->buffer; + if (buffer == NULL || buffer->need_line) { if (!_cpp_get_fresh_line (pfile)) { @@ -781,8 +785,8 @@ _cpp_lex_direct (cpp_reader *pfile) result->flags = BOL; if (pfile->state.parsing_args == 2) result->flags |= PREV_WHITE; + buffer = pfile->buffer; } - buffer = pfile->buffer; update_tokens_line: result->line = pfile->line; diff --git a/gcc/cpptrad.c b/gcc/cpptrad.c index caeda89..3c1bc25 100644 --- a/gcc/cpptrad.c +++ b/gcc/cpptrad.c @@ -299,7 +299,8 @@ _cpp_read_logical_line_trad (cpp_reader *pfile) { do { - if (pfile->buffer->need_line && !_cpp_get_fresh_line (pfile)) + if ((pfile->buffer == NULL || pfile->buffer->need_line) + && !_cpp_get_fresh_line (pfile)) return false; } while (!_cpp_scan_out_logical_line (pfile, NULL) || pfile->state.skipping); |