From e6fe674b404151c66440fd76bca7708cf3a2fe37 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Thu, 6 Feb 2020 22:38:30 +0200 Subject: [PATCH] Restore zoulas fixes, stage 3. --- run.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/run.c b/run.c index 0354ed2..4270e54 100644 --- a/run.c +++ b/run.c @@ -1850,23 +1850,24 @@ const char *filename(FILE *fp) void closeall(void) { - int i, stat; + size_t i; + bool stat = false; - for (i = 0; i < FOPEN_MAX; i++) { - if (files[i].fp) { - if (ferror(files[i].fp)) - FATAL( "i/o error occurred on %s", files[i].fname ); - if (files[i].mode == '|' || files[i].mode == LE) - stat = pclose(files[i].fp); - else - stat = fclose(files[i].fp); - if (stat == EOF) - FATAL( "i/o error occurred while closing %s", files[i].fname ); - } + for (i = 0; i < nfiles; i++) { + if (! files[i].fp) + continue; + if (ferror(files[i].fp)) + FATAL( "i/o error occurred on %s", files[i].fname ); + if (files[i].mode == '|' || files[i].mode == LE) + stat = pclose(files[i].fp) == -1; + else + stat = fclose(files[i].fp) == EOF; + if (stat) + FATAL( "i/o error occurred while closing %s", files[i].fname ); } } -void flush_all(void) +static void flush_all(void) { int i;