You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This code in flam3_interpolate() appears to be buggy for two reasons:
if (0 == i1) {
fprintf(stderr, "error: cannot use smooth interpolation on first segment.\n");
fprintf(stderr, "reverting to linear interpolation.\n");
flam3_align(&cpi[0], &cps[i1], 2);
smoothflag = 0;
}
if (ncps-1 == i2) {
fprintf(stderr, "error: cannot use smooth interpolation on last segment.\n");
fprintf(stderr, "reverting to linear interpolation.\n");
flam3_align(&cpi[0], &cps[i1], 2);
smoothflag = 0;
}
flam3_align(&cpi[0], &cps[i1-1], 4);
smoothflag = 1;
If the code preceding the block shown has set i1 to 0, then it will call flam3_align() twice. Once in the first conditional, and again at the end. This could cause a crash on the second call because:
cps[i1-1]
Will be using an index of -1.
Worse, if ncps is 2 then this will call flam3_align() three times because the second block will be true, and then crash.
This will be the case when flam3_interpolate() is called from sheep_edge() since the spun array passed to it has two elements, and from flam3_cross() since the parents array also has two elements.
I believe the fix is to do the following:
if (0 == i1)
{
//...
}
else if (ncps-1 == i2)
{
//...
}
else
{
//...
}
The text was updated successfully, but these errors were encountered:
This code in
flam3_interpolate()
appears to be buggy for two reasons:If the code preceding the block shown has set
i1
to 0, then it will callflam3_align()
twice. Once in the first conditional, and again at the end. This could cause a crash on the second call because:cps[i1-1]
Will be using an index of -1.
Worse, if ncps is 2 then this will call
flam3_align()
three times because the second block will be true, and then crash.This will be the case when
flam3_interpolate()
is called fromsheep_edge()
since the spun array passed to it has two elements, and fromflam3_cross()
since the parents array also has two elements.I believe the fix is to do the following:
The text was updated successfully, but these errors were encountered: