Aye. You can go in and alter the translated code in internal/temp manually with my "fix", but we can't push it into the repo as it breaks other things if applied across the board. If I could sort out where in QB64 we generate the appropriate code for the c translation, I could probably write an IF condition to toggle translation between the two outputs, but I haven't had time (or honestly, motivation) to try and dig deep into the internals and push for the issue.
And for those who don't understand WHY this is such a complex bug to sort out, here's one of the machine translated PUT statements:
sub_put( 1 , 1 ,byte_element((uint64)(&(qbs_new_fixed(&((uint8*)(__ARRAY_STRING1_B[0]))[(0)*1],1,1))),(1*(__ARRAY_STRING1_B[2]&1)*__ARRAY_STRING1_B[5])-(1*(0)),byte_element_1),1);
The issue is with a stray & in there. Oddly enough, from what I remember with the issue, removing it fixes so we can PUT #1, , array(), but it breaks PUT #1, , array(element), which we can do now.
Which is why their needs to be a toggle in the output, but I'll be damned if I can sort out where to PUT it inside QB64's internals.