Re: "Nasty" bug
- Posted by _tom (admin) Feb 25, 2019
- 2095 views
Another variation on "dropping the ball."
oE works "as expected"; Phix gives a different result when index is one (1).
constant ball = 88 sequence blank = { 0,0,0,0,0 } sequence lst for index = 1 to 5 do puts(1, "\n----------------------------------------- no assignment \n" ) lst = blank printf(1,"Outside lst value %g %g %g %g %g \n\n", lst ) ? set(ball, index) printf(1,"Outside lst value %g %g %g %g %g \n", lst ) puts(1, "\n----------------------------------------- with += assignment\n" ) lst = blank printf(1,"Outside lst value %g %g %g %g %g \n\n", lst ) lst[1] += set( ball, index) printf(1,"Outside lst value %g %g %g %g %g \n\n", lst ) puts(1, "\n----------------------------------------- with staged assignment\n" ) lst = blank printf(1,"Outside lst value %g %g %g %g %g \n\n", lst ) integer NDX = set(ball, index) lst[1] += NDX printf(1,"Outside lst value %g %g %g %g %g \n\n", lst ) puts(1, "\n-----------------------------------------\n" ) ? gets(0) -- pause to review results clear_screen() end for function set(integer thing, integer index) lst[index] = thing printf(1," Inside set argument %g\n", thing ) printf(1," Inside set index %d\n", index ) printf(1," Inside set value %g %g %g %g %g \n", lst ) return index end function puts(1,"\n\n Done")
_tom