From e60815be290c2334e9122b10ac53b92b23e7f9a3 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 1 May 2009 00:30:53 +0000 Subject: 3.5 --- lzf_c.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'lzf_c.c') diff --git a/lzf_c.c b/lzf_c.c index 99dab09..0b5d816 100644 --- a/lzf_c.c +++ b/lzf_c.c @@ -170,12 +170,13 @@ lzf_compress (const void *const in_data, unsigned int in_len, unsigned int maxlen = in_end - ip - len; maxlen = maxlen > MAX_REF ? MAX_REF : maxlen; + if (expect_false (op + 3 + 1 >= out_end)) /* first a faster conservative test */ + if (op - !lit + 3 + 1 >= out_end) /* second the exact but rare test */ + 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)) -- cgit v1.2.3