[LLVMbugs] [Bug 15270] New: The static analyzer does not understand that CFSTR is never NULL

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Feb 14 19:47:16 PST 2013


http://llvm.org/bugs/show_bug.cgi?id=15270

            Bug ID: 15270
           Summary: The static analyzer does not understand that CFSTR is
                    never NULL
           Product: clang
           Version: 3.2
          Hardware: Macintosh
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Static Analyzer
          Assignee: kremenek at apple.com
          Reporter: peter at stairways.com.au
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

This code reports an issue with value potentially being NULL, but if CFSTR is
known to not be NULL, then that assert makes it is clear result cannot be NULL
in this case.

Ironically, it is the assert testing for result != NULL that sets off the
analyzer in this case, but if the analyzer knew that CFSTR was never NULL, then
it would have no difficulty determining that result was never NULL in this
case.

inline void
CFDictionaryGet( CFStringRef def, CFStringRef& result )
{
    result = def;
    assert( (result != NULL) || (def == NULL) ); // Clearly indicates that
result cannot be NULL if def is not NULL
}


void Test2()
{
    CFStringRef value;
    CFDictionaryGet( CFSTR("Variable"), value );
    CFRetain( value ); // Erroneously detects as value might be NULL
}

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130215/673d3b5f/attachment.html>


More information about the llvm-bugs mailing list