On Jan 20, 2013, at 1:45 PM, jake@xxxxxxxxxxxxx wrote:
> http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=47188
>
> User: jake
> Date: 2013/01/20 01:45 PM
>
> Log:
> Fix for CID 715142.
> Be aware that the short-circuit evaluation only applies to the
> first operand of a logical AND expression.
...but if the second operand is itself a logical AND expression, short-circuit evaluation applies to the first operand of *that* expression. I'm not sure what that change actually changes; would not both evaluate as
if global_capture_opts.num_selected == 0
then
if prefs.capture_device != NULL
then
if *prefs_p->capture_device != '\0'
then
TRUE
else
FALSE
else
FALSE
else
FALSE
(expression syntax is C syntax, if/then syntax isn't)?
At least when I look at 715142, I think the problem about which it's complaining is that, unless prefs_p == &prefs, establishing that prefs.capture_devices != NULL does nothing to establish that prefs_p->capture_devices is != NULL, and therefore does nothing to establish that *prefs_p->capture_device is a valid reference.