aboutsummaryrefslogtreecommitdiff
path: root/tccpp.c
diff options
context:
space:
mode:
authorVlad Vissoultchev <wqweto@gmail.com>2016-04-13 10:48:15 +0300
committerVlad Vissoultchev <wqweto@gmail.com>2016-04-13 10:58:42 +0300
commit810a677d32ac03d47b71c73ed9422e95dc7743ed (patch)
tree308073e98ebc308e89c026ea2018e97d868f5320 /tccpp.c
parent6a49afb3ed134240f64bc219e2fb73ffb72ed326 (diff)
downloadtinycc-810a677d32ac03d47b71c73ed9422e95dc7743ed.tar.gz
tinycc-810a677d32ac03d47b71c73ed9422e95dc7743ed.tar.bz2
tccpp.c: Guard against ppfp being NULL
Missed these in e946eb2a4109e0de5f8514457f851897a4824c3e
Diffstat (limited to 'tccpp.c')
-rw-r--r--tccpp.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/tccpp.c b/tccpp.c
index c8687e3..f499774 100644
--- a/tccpp.c
+++ b/tccpp.c
@@ -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;