From 78c808b1264cbbec6c7cf4e9c4f321736a218949 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Mon, 2 May 2011 09:18:03 -0400 Subject: [PATCH] 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 |. --- src/stdio/fclose.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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);