diff --git a/lzw.c b/lzw.c index 341e31c187a886ac65e000e2fc3b3e3642fcb4b8..2c97f60c3962a439c783432f984cb454b456a92e 100644 --- a/lzw.c +++ b/lzw.c @@ -285,7 +285,6 @@ act_LZW_data(const HParseResult *p, void *u) elements[0] -> TT_BYTES representing the initial clear code elements[1] -> TT_BYTES containing the decompressed data elements[2] -> TT_UINT representing the EOD code - elements[3] -> TT_UINT representing the remaining bits from EOD to the end of the byte, should be 0 */ //HCountedArray * seq = H_CAST_SEQ(p->ast); @@ -332,8 +331,6 @@ void init_LZW_parser() H_VDRULE(LZW_11bitlitspec, h_bits(11, false), context); H_VDRULE(LZW_12bitlitspec, h_bits(12, false), context); - H_RULE(LZW_remainingbits, h_many(h_bits(1, false))); //XXX: could validate that these bits are 0? - H_AVDRULE(LZW_clear, h_choice(LZW_9bitlitspec, LZW_10bitlitspec, LZW_11bitlitspec, LZW_12bitlitspec, NULL), context); H_VDRULE(LZW_eod, h_choice(LZW_9bitlitspec, LZW_10bitlitspec, LZW_11bitlitspec, LZW_12bitlitspec, NULL), context); H_AVDRULE(LZW_literal, h_choice(LZW_9bitlitspec, LZW_10bitlitspec, LZW_11bitlitspec, LZW_12bitlitspec, NULL), context); @@ -341,7 +338,10 @@ void init_LZW_parser() H_ADRULE(LZW_body, h_many1(h_butnot(h_choice(LZW_literal, LZW_clear, LZW_codeword, NULL), LZW_eod)), context); - H_ADRULE(LZW_data, h_sequence(LZW_clear, LZW_body, LZW_eod, LZW_remainingbits, NULL), context); + H_ADRULE(LZW_data, h_sequence(LZW_clear, LZW_body, LZW_eod, NULL), context); + // XXX validate that the last byte is zero-padded? + // XXX require h_end_p()? + p_lzwdata = LZW_data; }