--- liblzf/lzf_c.c 2007/11/13 10:48:02 1.23 +++ liblzf/lzf_c.c 2007/11/13 10:56:57 1.24 @@ -256,7 +256,7 @@ } } - if (op + lit + 2 >= out_end) + if (op + 2 >= out_end) return 0; while (ip < in_end) @@ -265,7 +265,8 @@ *op++ = *ip++; } - op [- lit - 1] = lit - 1; + op [- lit - 1] = lit - 1; /* end run */ + op -= !lit; /* undo run if length is zero */ return op - (u8 *)out_data; }