diff --git a/pdf.c b/pdf.c index b77d8ce142fe12fb264ec2c851ca4759382e8754..f3485ade1cf50a9dd37e5da9e84e52ad22686fcf 100644 --- a/pdf.c +++ b/pdf.c @@ -1810,20 +1810,20 @@ LZWDecode(const Dict *parms, HBytes b, HParser *p) } done = depredict(&pred, cur_lzw_spec->lzw_buf, cur_lzw_spec->write_head-1); - if(!done) + if(done && ret) { - // happens if depred() thinks it needs more bytes or when depred is depred_none - fprintf(stderr, "LZWDecode: warning, depredict() returns 0, but lzw_decompress finished without error\n"); + fprintf(stderr, "LZWDecode: Depredict returned zero!\n"); } +#ifdef ITERATIVE + assert(done); // XXX always 0 if depredict() is depred_none +#endif + res = h_parse(p, pred.out, pred.nout); - free(pred.out); bind_lzw_spec(NULL); delete_lzw_spec(lzw_spec); - - assert(res->ast && res->ast->token_type == TT_BYTES); - res = h_parse(p, res->ast->bytes.token, res->ast->bytes.len); + free(pred.out); return res; }