diff options
author | root <root> | 2008-08-30 06:32:20 +0000 |
---|---|---|
committer | root <root> | 2008-08-30 06:32:20 +0000 |
commit | d42b054d34e4207843aa3f797193dfa74dab0c24 (patch) | |
tree | c6d0567dde018ceeec3788f05f1b687b2eabe14b /lzf_c.c | |
parent | d52302e9cb04a26c03219da3be74ed68d37cf5d3 (diff) |
*** empty log message ***
Diffstat (limited to 'lzf_c.c')
-rw-r--r-- | lzf_c.c | 43 |
1 files changed, 23 insertions, 20 deletions
@@ -222,37 +222,40 @@ lzf_compress (const void *const in_data, unsigned int in_len, } *op++ = off; + lit = 0; op++; /* start run */ + + ip += len + 1; + + if (expect_false (ip > in_end - 2)) + break; - if (expect_true (ip + len < in_end - 2)) - { #if ULTRA_FAST || VERY_FAST - ip += len; + --ip; # if VERY_FAST && !ULTRA_FAST - --ip; + --ip; # endif - hval = FRST (ip); + hval = FRST (ip); - hval = NEXT (hval, ip); - htab[IDX (hval)] = ip; - ip++; + hval = NEXT (hval, ip); + htab[IDX (hval)] = ip; + ip++; # if VERY_FAST && !ULTRA_FAST + hval = NEXT (hval, ip); + htab[IDX (hval)] = ip; + ip++; +# endif +#else + ip -= len + 1; + + do + { hval = NEXT (hval, ip); htab[IDX (hval)] = ip; ip++; -# endif -#else - do - { - hval = NEXT (hval, ip); - htab[IDX (hval)] = ip; - ip++; - } - while (len--); -#endif } - - lit = 0; op++; /* start run */ + while (len--); +#endif } else { |