Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 Dec 2017 14:11:36 -0800
From:      Mark Millard <markmi@dsl-only.net>
To:        phk@phk.freebsd.dk, FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Re: Is it considered to be ok to not check the return code of close(2) in base?
Message-ID:  <79FFA3EB-5994-4B7B-BE35-F1AB9D4AE3CD@dsl-only.net>

next in thread | raw e-mail | index | archive | help
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:
>=20
> 	assert(close(fd) =3D=3D 0);
>=20
> 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) =3D=3D 0);

is a bad coding practice in my view.

=3D=3D=3D
Mark Millard
markmi at dsl-only.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?79FFA3EB-5994-4B7B-BE35-F1AB9D4AE3CD>