Browse Source

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 |.
Rich Felker 14 years ago
parent
commit
78c808b126
1 changed files with 2 additions and 1 deletions
  1. 2 1
      src/stdio/fclose.c

+ 2 - 1
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);