Is it considered to be ok to not check the return code of close(2) in base?
Mark Millard
markmi at dsl-only.net
Sun Dec 31 22:11:46 UTC 2017
Poul-Henning Kamp phk at phk.freebsd.dk wrote on
Sat Dec 30 20:35:35 UTC 2017 :
> But if you just close a file, and you're 100% sure that will work,
> you should write it as:
>
> assert(close(fd) == 0);
>
> To tell the rest of us about your assumption and your confidence in it.
Quoting the FreeBSD assert man page:
QUOTE
The assert() macro may be removed at compile time by defining NDEBUG as a
macro (e.g., by using the cc(1) option -DNDEBUG).
ENDQUOTE
This makes required-actions inside asserts dangerous,
at least without guarantees that NDEBUG will be
undefined. Trying to guarantee that NDEBUG will be
undefined would generally be a bad idea.
So,
assert(close(fd) == 0);
is a bad coding practice in my view.
===
Mark Millard
markmi at dsl-only.net
More information about the freebsd-hackers
mailing list