BoostC 6.30
gives wrong result:
odd=(length&2);
0084 3002 MOVLW 0x02
0085 0570 ANDWF chksum_00000_arg_length, W
0086 00FC MOVWF CompTempVar65
0087 10EB BCF chksum_00000_1_odd,1
0088 187C BTFSC CompTempVar65,0
0089 14EB BSF chksum_00000_1_odd,1
i.e. odd=least significant bit of (length&2)
But, according to ansi c, odd should be
0, if (length&2)==0
1, if any other value (1-255)