Explorar el Código

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 hace 14 años
padre
commit
78c808b126
Se han modificado 1 ficheros con 2 adiciones y 1 borrados
  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);