Clang static analysis results for dmd
dennis luehring
dl.soluz at gmx.net
Sat Jul 30 23:48:48 PDT 2011
Am 29.07.2011 22:02, schrieb Walter Bright:
> Here's another one:
>
> T* p;
> ...
> if (A)
> p = &t;
> ...
> if (B)
> ... *p ...
>
> B is true if and only if A is true. B can even be the same expression as
> A, such as a->b->c. Clang complains on the *p that p is "uninitialized".
> Ok, so I rewrite as:
>
> T* p = NULL;
> ...
> if (A)
> p = &t;
> ...
> if (B)
> ... *p ...
>
> but now clang says I'm dereferencing a NULL pointer. At this point, I'm
> faced with some significant trial-and-error refactoring to get rid of
> the message.
>
> At what point does this cease to be fixing "bugs" and become "contort to
> fit clang's quirks"?
but your code does not reflect your "B is true if and only if A is
true." statement
T* p = NULL;
if (A)
{
p = &t;
if (B)
... *p ...
}
More information about the Digitalmars-d
mailing list