From cbca3399a6a1c4deb5604d141a38eedc11f5a618 Mon Sep 17 00:00:00 2001 From: driAn Date: Mon, 22 Sep 2008 20:14:17 +0000 Subject: [PATCH] restrict lzw dict to 4096 entries (maxfieldsize=12bits) git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2734 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/lzwcompression.cpp | 51 +++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 11 deletions(-) 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