Source Insight evaluates the whole conditional expression each time. Expressions are not short-circuited. This is an important difference from the way that C conditional expressions are evaluated. In C, the expression may be partially evaluated. Consider the following conditional expression:
if (hbuf != hNil && GetBufLineCount(hbuf) > x)
This conditional expression would lead to an error in Source Insight if hbuf is equal to hNil. In C, the evaluation would be terminated after determining that hbuf != hNil. In Source Insight, the whole expression is evaluated. In this case, causing an error since hNil would be passed as the buffer handle to GetBufLineCount.
In Source Insight, this statement would have to written like this:
if (hbuf != hNil)
if (GetBufLineCount(hbuf) > x)