On Wed, Dec 18, 2013 at 10:37:03AM +0100, Marin Ramesa wrote: > Compiler needs to check both !a and !b. In order to evaluate !b it must > evaluate b. So when the code path is that when entry is a null pointer, > the evaluation of b results in a dereference of a null pointer.
No, that's wrong. The && and || operators are guaranteed to be evaluated left-to-right, and yield if the first operand compares equal to 0. And that's exactly why this check against NULL is done first. -- Richard Braun