diff options
| author | Vlad Vissoultchev <wqweto@gmail.com> | 2016-04-13 10:48:15 +0300 |
|---|---|---|
| committer | Vlad Vissoultchev <wqweto@gmail.com> | 2016-04-13 10:58:42 +0300 |
| commit | 810a677d32ac03d47b71c73ed9422e95dc7743ed (patch) | |
| tree | 308073e98ebc308e89c026ea2018e97d868f5320 | |
| parent | 6a49afb3ed134240f64bc219e2fb73ffb72ed326 (diff) | |
| download | tinycc-810a677d32ac03d47b71c73ed9422e95dc7743ed.tar.gz tinycc-810a677d32ac03d47b71c73ed9422e95dc7743ed.tar.bz2 | |
tccpp.c: Guard against ppfp being NULL
Missed these in e946eb2a4109e0de5f8514457f851897a4824c3e
| -rw-r--r-- | tcc.c | 9 | ||||
| -rw-r--r-- | tccpp.c | 33 |
2 files changed, 18 insertions, 24 deletions
@@ -303,13 +303,8 @@ int main(int argc, char **argv) tcc_error("could not write '%s'", s->outfile); } s->dffp = s->ppfp; - if (s->dflag == 'M') { -#ifndef TCC_TARGET_PE - s->ppfp = fopen("/dev/null", "w"); -#else - s->ppfp = fopen("nul", "w"); -#endif - } + if (s->dflag == 'M') + s->ppfp = NULL; } tcc_set_output_type(s, s->output_type); @@ -1072,20 +1072,18 @@ static int macro_is_equal(const int *a, const int *b) static void pp_line(TCCState *s1, BufferedFile *f, int level) { - int d = f->line_num - f->line_ref; - if (s1->Pflag == LINE_MACRO_OUTPUT_FORMAT_NONE - || (level == 0 && f->line_ref && d < 8)) - { - while (d > 0) - fputs("\n", s1->ppfp), --d; - } - else - if (s1->Pflag == LINE_MACRO_OUTPUT_FORMAT_STD) { - fprintf(s1->ppfp, "#line %d \"%s\"\n", f->line_num, f->filename); - } - else { - fprintf(s1->ppfp, "# %d \"%s\"%s\n", f->line_num, f->filename, - level > 0 ? " 1" : level < 0 ? " 2" : ""); + if (s1->ppfp) { + int d = f->line_num - f->line_ref; + if (s1->Pflag == LINE_MACRO_OUTPUT_FORMAT_NONE + || (level == 0 && f->line_ref && d < 8)) { + while (d > 0) + fputs("\n", s1->ppfp), --d; + } else if (s1->Pflag == LINE_MACRO_OUTPUT_FORMAT_STD) { + fprintf(s1->ppfp, "#line %d \"%s\"\n", f->line_num, f->filename); + } else { + fprintf(s1->ppfp, "# %d \"%s\"%s\n", f->line_num, f->filename, + level > 0 ? " 1" : level < 0 ? " 2" : ""); + } } f->line_ref = f->line_num; } @@ -3473,16 +3471,17 @@ ST_FUNC int tcc_preprocess(TCCState *s1) continue; } pp_line(s1, file, 0); - while (spcs) + while (s1->ppfp && spcs > 0) fputs(" ", s1->ppfp), --spcs; + spcs = 0; token_seen = 1; } else if (tok == TOK_LINEFEED) { ++file->line_ref; token_seen = 0; } - - fputs(get_tok_str(tok, &tokc), s1->ppfp); + if (s1->ppfp) + fputs(get_tok_str(tok, &tokc), s1->ppfp); } return 0; |
