diff options
author | root <root> | 2007-11-13 11:30:37 +0000 |
---|---|---|
committer | root <root> | 2007-11-13 11:30:37 +0000 |
commit | 110fdc6e441d5e2ef11229486534db0f5e36e87d (patch) | |
tree | 8c204af427594f94210c5a1dbf02aaf35748a63c /lzf_c.c | |
parent | d73fdbeb9a5b1d65e82c22411d76fc117ad67296 (diff) |
*** empty log message ***
Diffstat (limited to 'lzf_c.c')
-rw-r--r-- | lzf_c.c | 29 |
1 files changed, 14 insertions, 15 deletions
@@ -237,32 +237,31 @@ lzf_compress (const void *const in_data, unsigned int in_len, } while (len--); #endif + lit = 0; op++; /* start run */ - continue; } + else + { + /* one more literal byte we must copy */ + if (expect_false (op >= out_end)) + return 0; - /* one more literal byte we must copy */ - - if (expect_false (op >= out_end)) - return 0; - - lit++; - *op++ = *ip++; + lit++; *op++ = *ip++; - if (expect_false (lit == MAX_LIT)) - { - op [- lit - 1] = lit - 1; /* stop run */ - lit = 0; op++; /* start run */ + if (expect_false (lit == MAX_LIT)) + { + op [- lit - 1] = lit - 1; /* stop run */ + lit = 0; op++; /* start run */ + } } } - if (op + 2 >= out_end) + if (op + 2 > out_end) /* at most 2 bytes can be missing here */ return 0; while (ip < in_end) { - lit++; - *op++ = *ip++; + lit++; *op++ = *ip++; } op [- lit - 1] = lit - 1; /* end run */ |