[fpc-pascal] Bitpacked bug?

Victor Campillo victor.campillo at gmail.com
Sun May 12 17:58:57 CEST 2019


Hi,

I think I found a bug with bitpackeds records.

I have the next record.

   TBitpacked = packed record
     Case Integer Of
       0 : (Word :  Word);
       1 : (Byte :  array [0..1] of Byte);
       2 : (Boolean: bitpacked Array [0..15] of boolean);
       3 : (Bit : bitpacked Record
           case integer of
             0: (bit0: Boolean);
             1: (bit1: Boolean);
             2: (bit2: Boolean);
             3: (bit3: Boolean);
             4: (bit4: Boolean);
             5: (bit5: Boolean);
             6: (bit6: Boolean);
             7: (bit7: Boolean);
             8: (bit8: Boolean);
             9: (bit9: Boolean);
             10: (bit10: Boolean);
             11: (bit11: Boolean);
             12: (bit12: Boolean);
             13: (bit13: Boolean);
             14: (bit14: Boolean);
             15: (bit15: Boolean);
           end);
     end;

See the program below.

var

   pp:TBitpacked;

begin
   pp.Word:=0;
   pp.Boolean[1]:=true;
   writeln(pp.Byte[0]); // This prints 2 -- OK
   writeln(pp.Boolean[0]); // This prints False -- OK
   writeln(pp.Boolean[1]); // This prints True -- OK

   pp.Word:=0;
   pp.Bit.bit1:=true;
   writeln(pp.Byte[0]); // This prints 1 -- WRONG
   writeln(pp.Boolean[0]); // This prints True -- WRONG
   writeln(pp.Boolean[1]); // This prints False -- WRONG

   pp.Word:=0;
   pp.Boolean[8]:=true;
   writeln(pp.Byte[0]); // This prints 0 -- OK
   writeln(pp.Byte[1]); // This prints 1 -- OK
   writeln(pp.Boolean[0]); // This prints False -- OK
   writeln(pp.Boolean[8]); // This prints True -- OK

   pp.Word:=0;
   pp.Bit.bit8:=true;
   writeln(pp.Byte[0]); // This prints 1 -- WRONG
   writeln(pp.Byte[1]); // This prints 0 -- WRONG
   writeln(pp.Boolean[0]); // This prints True -- WRONG
   writeln(pp.Boolean[8]); // This prints False -- WRONG
end.


Is this a known issue or there is something wrong with my code?

I tested this with FPC 3.0.4 and trunk, same result.

Best Regards.

-- 
Victor Campillo




More information about the fpc-pascal mailing list