Răsfoiți Sursa

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 ani în urmă
părinte
comite
78c808b126
1 a modificat fișierele cu 2 adăugiri și 1 ștergeri
  1. 2 1
      src/stdio/fclose.c

+ 2 - 1
src/stdio/fclose.c

@@ -13,7 +13,8 @@ int fclose(FILE *f)
 		OFLUNLOCK();
 		OFLUNLOCK();
 	}
 	}
 
 
-	r = -(fflush(f) || f->close(f));
+	r = fflush(f);
+	r |= f->close(f);
 
 
 	if (!perm) free(f);
 	if (!perm) free(f);