From: Justin Viiret Date: Mon, 30 Jan 2017 22:53:16 +0000 (+1100) Subject: stream: simplify do_rebuild call site X-Git-Tag: v4.5.0^2~270 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cfa63a70964d26cf7b52d255c91f26c66dd84a86;p=thirdparty%2Fvectorscan.git stream: simplify do_rebuild call site --- diff --git a/src/rose/stream.c b/src/rose/stream.c index 31224276..c68cd8ab 100644 --- a/src/rose/stream.c +++ b/src/rose/stream.c @@ -413,13 +413,9 @@ void ensureStreamNeatAndTidy(const struct RoseEngine *t, char *state, static really_inline void do_rebuild(const struct RoseEngine *t, struct hs_scratch *scratch) { + assert(t->drmatcherOffset); assert(!can_stop_matching(scratch)); - if (!t->drmatcherOffset) { - DEBUG_PRINTF("no delayed rebuild table\n"); - return; - } - const struct HWLM *hwlm = getByOffset(t, t->drmatcherOffset); size_t len = MIN(scratch->core_info.hlen, t->delayRebuildLength); const u8 *buf = scratch->core_info.hbuf + scratch->core_info.hlen - len; @@ -641,17 +637,14 @@ void roseStreamExec(const struct RoseEngine *t, struct hs_scratch *scratch) { rebuild, scratch->core_info.status, t->maxFloatingDelayedMatch, offset); - if (!flen) { - if (rebuild) { /* rebuild floating delayed match stuff */ - do_rebuild(t, scratch); - } - goto flush_delay_and_exit; - } - if (rebuild) { /* rebuild floating delayed match stuff */ do_rebuild(t, scratch); } + if (!flen) { + goto flush_delay_and_exit; + } + if (flen + offset <= t->floatingMinDistance) { DEBUG_PRINTF("skip FLOATING: before floating min\n"); goto flush_delay_and_exit;