summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-05-02 09:18:03 -0400
committerRich Felker <dalias@aerifal.cx>2011-05-02 09:18:03 -0400
commit78c808b1264cbbec6c7cf4e9c4f321736a218949 (patch)
tree07dc2163a31124ce274d76de14f0f953bc598497 /src
parentbd6746732536fdf2ebaadff6f98aee0879b1674d (diff)
downloadmusl-78c808b1264cbbec6c7cf4e9c4f321736a218949.tar.gz
fix fclose return status logic, again
the previous fix was incorrect, as it would prevent f->close(f) from being called if fflush(f) failed. i believe this was the original motivation for using | rather than ||. so now let's just use a second statement to constrain the order of function calls, and to back to using |.
Diffstat (limited to 'src')
-rw-r--r--src/stdio/fclose.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/stdio/fclose.c b/src/stdio/fclose.c
index 9481470d..ee772fbb 100644
--- a/src/stdio/fclose.c
+++ b/src/stdio/fclose.c
@@ -13,7 +13,8 @@ int fclose(FILE *f)
OFLUNLOCK();
}
- r = -(fflush(f) || f->close(f));
+ r = fflush(f);
+ r |= f->close(f);
if (!perm) free(f);