On Thu, May 09, 2019 at 12:53:07 +0200, Martin Kletzander wrote:
On Thu, May 09, 2019 at 12:43:33PM +0200, Peter Krempa wrote:
> Document that checking if a integer is (non-)zero should (not must)
> avoid the shortened form that C allows as it may confuse readers into
> overlooking the other possible values which might be interresting to
> handle.
>
> While pointers have distinct values from the point of view of the code
> we only care whether it's non-NULL and thus it's documented it's okay
> to shorten those.
>
> Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
> ---
> docs/hacking.html.in | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/docs/hacking.html.in b/docs/hacking.html.in
> index 081d793360..a2800853ef 100644
> --- a/docs/hacking.html.in
> +++ b/docs/hacking.html.in
> @@ -826,6 +826,28 @@
> }
> </pre>
>
> + <h2><a id="conditions">Conditional
expressions</a></h2>
> + <p>For readability reasons new code should avoid shortening
comparisons
> + to 0 for numeric types. Boolean and pointer comparisions may be
> + shortened. All long forms are okay:
> + </p>
> +<pre>
> + virFooPtr foos = NULL;
> + size nfoos = 0;
> + bool hasFoos = false;
> +
> +GOOD:
> + if (!foos)
> + if (!hasFoos)
> + if (nfoos == 0)
> + if (foos == NULL)
> + if (hasFoos == true)
> +
> +BAD:
> + if (!nfoos)
> + if (foos)
why is this bad when it is a pointer? Typo?
Oops, yes. This was supposed to be "if (nfoos)"