On Wed, Dec 18, 2013 at 10:46:40AM +0100, Richard Braun wrote: > 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.
Compares equal to 0 for &&, and not equal to 0 for ||, obviously. -- Richard Braun