diff --git a/source/src/lzwcompression.cpp b/source/src/lzwcompression.cpp index 8b37c92b..b01d7138 100644 --- a/source/src/lzwcompression.cpp +++ b/source/src/lzwcompression.cpp @@ -120,8 +120,9 @@ struct bitbuf : databuf struct lzwbuffer : bitbuf { lzwdirectory dictionary; + const int maxfieldsize; - lzwbuffer(uchar *buf, size_t maxlen) : bitbuf(buf, maxlen) + lzwbuffer(uchar *buf, size_t maxlen) : bitbuf(buf, maxlen), maxfieldsize(12) { dictionary.fillstaticentries(); } @@ -185,7 +186,7 @@ struct lzwbuffer : bitbuf // increase bitfieldsize int supporteddictsize = (1<supporteddictsize) fieldsize++; + if(dictionary.length()>supporteddictsize && fieldsize=supporteddictsize) fieldsize++; + if(dictionary.length()>=supporteddictsize && fieldsize