Fix a segfault while attempting to close an unopened file
authorDmitri Vorobiev <dmitri.vorobiev@movial.com>
Tue, 5 Oct 2010 10:55:07 +0000 (13:55 +0300)
committerDmitri Vorobiev <dmitri.vorobiev@movial.com>
Tue, 5 Oct 2010 10:55:07 +0000 (13:55 +0300)
When using stdout only for benchmark output, we must not
attempt to close the output stream when exiting the program,
otherwise we get a SIGSEGV.

main.c

diff --git a/main.c b/main.c
index 241ff40..3e2a9b3 100644 (file)
--- a/main.c
+++ b/main.c
@@ -380,9 +380,12 @@ int main(int argc, char **argv)
        if(prec<0)
                prec=0;
        printf("Total score: %.*f (%s %s-%08x)\n", prec, total, VERSION, in_fn, crc32);
-       if(out)
+       if(out) {
                fprintf(out, "%.*f,%s,%s-%08x\n", prec, total, VERSION, in_fn, crc32);
-       fclose(out);
+               fclose(out);
+       }
+
+       /* The in stream is guaranteed to be non-zero here, so fclose() is safe. */
        fclose(in);
 
        return 0;