JSAT icon indicating copy to clipboard operation
JSAT copied to clipboard

Fix nested conditions

Open Egor18 opened this issue 6 years ago • 0 comments

Hi! This code fragment works not the way it is formatted.

if(label[i] == -1)
    if(I0[i] && (i_low == -1 || fcache[i] > fcache[i_low]) )
    {
        i_low = i;
        b_low = fcache[i];
    }
else
    if(I0[i] && (i_low == -1 || fcache[i] > fcache[i_up]) )
    {
        i_up = i;
        b_up = fcache[i];
    }

is actually this (else sticks to the previous if):

if(label[i] == -1)
    if(I0[i] && (i_low == -1 || fcache[i] > fcache[i_low]) )
    {
        i_low = i;
        b_low = fcache[i];
    }
    else if(I0[i] && (i_low == -1 || fcache[i] > fcache[i_up]) )
    {
        i_up = i;
        b_up = fcache[i];
    }

I think this is a bug. (I found this with the data-flow analyzer I'm working on. It warns that i_low == -1 is always false in the second condition.)

Egor18 avatar Dec 28 '19 11:12 Egor18