• ingo@mysql.com's avatar
    Bug#8321 - myisampack bug in compression algorithm · 66a158a9
    ingo@mysql.com authored
    This is the second of three changesets. It contains the pure bug fix.
    It also contains the second after-review fixes.
    The problem was that with gcc on x86, shifts are done modulo word size. 
    'value' is 32 bits wide and shifting it by 32 bits is a no-op.
    This was triggered by an evil distribution of character incidences. 
    A distribution of 2917027827 characters made of 202 distinct values led to
    34 occurrences of 32-bit Huffman codes.
    This might have been the first time ever that write_bits() had to write
    32-bit values. Since it can be expected that one day even 32 bits might
    be insufficient, the third changeset suggests to enlarge some variables
    to 64 bits.
    66a158a9
myisampack.c 60.6 KB