--- liblzf/lzf_c.c 2007/11/13 10:56:57 1.24 +++ liblzf/lzf_c.c 2007/11/13 11:02:28 1.25 @@ -159,12 +159,12 @@ unsigned int maxlen = in_end - ip - len; maxlen = maxlen > MAX_REF ? MAX_REF : maxlen; - if (expect_false (op + 1 + 3 >= out_end)) - return 0; - op [- lit - 1] = lit - 1; /* stop run */ op -= !lit; /* undo run if length is zero */ + if (expect_false (op + 3 + 1 >= out_end)) + return 0; + for (;;) { if (expect_true (maxlen > 16))