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 |.
rs-1.0
Rich Felker 15 years ago
parent
commit
78c808b126
  1. 3
      src/stdio/fclose.c

3
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);

Loading…
Cancel
Save