Explorar o código

fix undefined call order in fclose, possible lost output depending on compiler

pcc turned up this bug by calling f->close(f) before fflush(f),
resulting in lost output and error on flush.
Rich Felker %!s(int64=14) %!d(string=hai) anos
pai
achega
bd67467325
Modificáronse 1 ficheiros con 1 adicións e 1 borrados
  1. 1 1
      src/stdio/fclose.c

+ 1 - 1
src/stdio/fclose.c

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