diff --git a/lzw.c b/lzw.c
index 81ac7521c360f3442e3ec3abb5bfefe969442dba..64e79dc9a36b13b0b18e358fa2a044654a5fa701 100644
--- a/lzw.c
+++ b/lzw.c
@@ -74,35 +74,35 @@ act_LZW_clear(const HParseResult *p, void *u)
 // compare against expected next code, fail the parse if doesn't fit bit length
 
 bool
-validate_LZW_9bitcodeword(const HParseResult *p, void *u)
+validate_LZW_9bitcodeword(HParseResult *p, void *u)
 {
 	LZW_context_T * ctx = (LZW_context_T *) u;
 	return (ctx->next < 512);
 }
 
 bool
-validate_LZW_10bitcodeword(const HParseResult *p, void *u)
+validate_LZW_10bitcodeword(HParseResult *p, void *u)
 {
 	LZW_context_T * ctx = (LZW_context_T *) u;
 	return (ctx->next >= 512 && ctx->next < 1024);
 }
 
 bool
-validate_LZW_11bitcodeword(const HParseResult *p, void *u)
+validate_LZW_11bitcodeword(HParseResult *p, void *u)
 {
 	LZW_context_T * ctx = (LZW_context_T *) u;
 	return (ctx->next >= 1024 && ctx->next < 2048);
 }
 
 bool
-validate_LZW_12bitcodeword(const HParseResult *p, void *u)
+validate_LZW_12bitcodeword(HParseResult *p, void *u)
 {
 	LZW_context_T * ctx = (LZW_context_T *) u;
 	return (ctx->next >= 2048 && ctx->next < 4096);
 }
 
 bool
-validate_LZW_literal(const HParseResult *p, void *u)
+validate_LZW_literal(HParseResult *p, void *u)
 {
 	uint64_t code = H_CAST_UINT(p->ast);
 	return (code < 256);
@@ -229,5 +229,6 @@ void init_lzw_parser()
 	H_VRULE(LZW_12bitcodeword, h_bits(12, false));
 	H_ARULE(LZW_codeword, h_choice(LZW_9bitcodeword, LZW_10bitcodeword, LZW_11bitcodeword, LZW_12bitcodeword, NULL));
 	H_RULE(LZW_data, h_sequence(LZW_clear, h_many1(h_choice(LZW_literal, LZW_clear, LZW_codeword, NULL)), LZW_eod, NULL));
+	p_lzwdata = LZW_data;
 }