diff options
Diffstat (limited to 'tempfile.c')
-rw-r--r-- | tempfile.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/tempfile.c b/tempfile.c index 2990c92424..6843710670 100644 --- a/tempfile.c +++ b/tempfile.c @@ -247,12 +247,13 @@ int close_tempfile(struct tempfile *tempfile) tempfile->fd = -1; if (fp) { tempfile->fp = NULL; - - /* - * Note: no short-circuiting here; we want to fclose() - * in any case! - */ - err = ferror(fp) | fclose(fp); + if (ferror(fp)) { + err = -1; + if (!fclose(fp)) + errno = EIO; + } else { + err = fclose(fp); + } } else { err = close(fd); } |