Hi, On Thu, 9 Jul 2009, Thomas Rast wrote: > Johannes Schindelin wrote: > > On Thu, 9 Jul 2009, Thomas Rast wrote: > > > > > Martin Ettl wrote: > > > > - if (ferror(f) || fclose(f)) > > > > + if (ferror(f)) > > > > error("Unable to write marks file %s.", file); > > > > + fclose(f); > > > > > > You no longer check the error returned by fclose(). This is > > > important, because the FILE* API may buffer writes, and a write error > > > may only become apparent when fclose() flushes the file. > > > > Indeed. A better fix would be to replace the || by a |, but this must be > > accompanied by a comment so it does not get removed due to overzealous > > compiler warnings. > > Are you allowed to do that? IIRC using | no longer guarantees that > ferror() is called before fclose(), and my local 'man 3p fclose' says > that > > After the call to fclose(), any use of stream results in > undefined behavior. Good point. So we really need something like err = ferror(f); err |= fclose(f); /* call fclose() even if there was an error */ if (err) error... Ciao, Dscho -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html