Clang static analysis results for dmd

Walter Bright newshound2 at digitalmars.com
Fri Jul 29 13:02:52 PDT 2011


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"?


More information about the Digitalmars-d mailing list