[cfe-users] Propagating noreturn to the static analyzer

Thomas Engelmeier tengelmeier at blackberry.com
Mon Feb 10 02:34:40 PST 2014


Next question: ! get a bunch of errors about pointers not checked for NULL
in code like this. I tried variations of decorating My_LogAssertFailed
with noreturn, putting the abort directly in the macro etc. How does the
clang static analyzer see there is actually an check against NULL?

TIA, 
     Thomas

#define MY_ASSERT(condition) do { if (!(condition))
My_LogAssertFailed(__FILE__, __LINE__, __FUNCTION__, #condition); } while
(0)

My_LogAssertFailed( const char *file, int line, const char *function,
const char *condition ) {

// …
   abort();
}


static void SomeFunction(MyContext_h context)
{
   MY_ASSERT(context != NULL);

   if (context->foo != NULL) {   // static analyzer complains here about
potential NULL pointer deference
//... 
   }
}





More information about the cfe-users mailing list