X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Flizard.c;h=e5035e05698827fb0af13e0d3503110bbe79fbd8;hb=beb9738f1fbcba84bc0f09f742fb66b1ddfcf349;hp=6167fee043ba90c07befef746cd6bd917c5c21d7;hpb=891ffffc2cdc248c13f8c6bd6bbc312a2dcd02d8;p=libucw.git diff --git a/lib/lizard.c b/lib/lizard.c index 6167fee0..e5035e05 100644 --- a/lib/lizard.c +++ b/lib/lizard.c @@ -6,7 +6,7 @@ * This software may be freely distributed and used according to the terms * of the GNU Lesser General Public License. * - * The file format is based on LZO1X and + * The file format is based on LZO1X and * the compression method is based on zlib. */ @@ -35,7 +35,7 @@ hashf(byte *string) } static inline byte * -locate_string(byte *string, uns record_id, uns head) +locate_string(byte *string, int record_id, int head) /* The strings are recorded into the hash-table regularly, hence there is no * need to store the pointer there. */ { @@ -177,7 +177,7 @@ lizard_compress(byte *in, uns in_len, byte *out) while (in < in_end) { uns hash = hashf(in); - byte *best; + byte *best = NULL; uns len = find_match(hash_tab[hash], hash_rec, in, in_end, &best, head); if (len < 3) #if 0 // TODO: now, our routine does not detect matches of length 2 @@ -380,7 +380,8 @@ lizard_decompress(byte *in, byte *out) else { /* overlapping */ for (; len-- > 0; out++) - *out = out[-pos]; + *out = *(out-pos); + /* It's tempting to use out[-pos] above, but unfortunately it's not the same */ } /* extract the copy-bits */ len = in[-2] & 0x3; @@ -449,7 +450,7 @@ long. Decode sequences of these types until the EOF or END marker is read. C following characters will be copied from the compressed text to the output. The number CC is always stored in the 2 least significant bits of the second last byte of the sequence. - + If END is read, the algorithm switches to the copy mode. pattern length position