From a34d4cf15a5325ded507ce9e6395bcdae5aff24e Mon Sep 17 00:00:00 2001 From: arai Date: Sat, 29 Jun 2002 02:49:41 +0000 Subject: [PATCH] * src/dhuf.c (encode_c_dyn): Refined by DANGAN (reported on the LHa BBS [30], [39], [62]) git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/lha/lha/trunk@251 6a8cc165-1e22-0410-a132-eb4e3f353aba --- src/dhuf.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/dhuf.c b/src/dhuf.c index 263ce0f..dfdcfda 100644 --- a/src/dhuf.c +++ b/src/dhuf.c @@ -253,14 +253,16 @@ encode_c_dyn(c) do { bits >>= 1; if (p & 1) { - bits |= 0x8000; - } - if (++cnt == 16) { - putcode(16, bits); - cnt = bits = 0; + bits |= 0x80000000L; } + cnt++; } while ((p = parent[p]) != ROOT_C); - putcode(cnt, bits); + if (cnt <= 16) { + putcode(cnt, bits >> 16); + } else { + putcode(16, bits >> 16); + putbits(cnt - 16, bits); + } if (d >= 0) putbits(8, d); update_c(c); -- 2.11.0