From efa3299774411bc0c5f9f10b06a7bdf60c9b3cd5 Mon Sep 17 00:00:00 2001 From: Alex Coyte Date: Thu, 1 Sep 2016 09:55:53 +1000 Subject: [PATCH] remove code preventing firing callbacks in the history buffer --- src/nfa/gough.c | 21 ++------------------- src/nfa/mcclellan.c | 20 ++------------------ src/nfa/sheng.c | 4 +--- 3 files changed, 5 insertions(+), 40 deletions(-) diff --git a/src/nfa/gough.c b/src/nfa/gough.c index 520aca93..44acd4c2 100644 --- a/src/nfa/gough.c +++ b/src/nfa/gough.c @@ -655,12 +655,6 @@ char nfaExecGough8_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, const u8 *cur_buf = sp < 0 ? hend : buffer; - char report = 1; - if (mode == CALLBACK_OUTPUT) { - /* we are starting inside the history buffer: matches are suppressed */ - report = !(sp < 0); - } - if (mode != NO_MATCHES && q->items[q->cur - 1].location > end) { /* this is as far as we go */ q->cur--; @@ -691,8 +685,7 @@ char nfaExecGough8_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, const u8 *final_look; if (goughExec8_i_ni(m, som, &s, cur_buf + sp, local_ep - sp, - offset + sp, cb, context, &final_look, - report ? mode : NO_MATCHES) + offset + sp, cb, context, &final_look, mode) == MO_HALT_MATCHING) { *(u8 *)q->state = 0; return 0; @@ -724,7 +717,6 @@ char nfaExecGough8_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, if (sp == 0) { cur_buf = buffer; - report = 1; } if (sp != ep) { @@ -789,12 +781,6 @@ char nfaExecGough16_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, const u8 *cur_buf = sp < 0 ? hend : buffer; - char report = 1; - if (mode == CALLBACK_OUTPUT) { - /* we are starting inside the history buffer: matches are suppressed */ - report = !(sp < 0); - } - assert(q->cur); if (mode != NO_MATCHES && q->items[q->cur - 1].location > end) { /* this is as far as we go */ @@ -822,10 +808,8 @@ char nfaExecGough16_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, /* do main buffer region */ const u8 *final_look; if (goughExec16_i_ni(m, som, &s, cur_buf + sp, local_ep - sp, - offset + sp, cb, context, &final_look, - report ? mode : NO_MATCHES) + offset + sp, cb, context, &final_look, mode) == MO_HALT_MATCHING) { - assert(report); *(u16 *)q->state = 0; return 0; } @@ -856,7 +840,6 @@ char nfaExecGough16_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, if (sp == 0) { cur_buf = buffer; - report = 1; } if (sp != ep) { diff --git a/src/nfa/mcclellan.c b/src/nfa/mcclellan.c index 88da27c0..992f78e2 100644 --- a/src/nfa/mcclellan.c +++ b/src/nfa/mcclellan.c @@ -496,12 +496,6 @@ char nfaExecMcClellan16_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, const u8 *cur_buf = sp < 0 ? hend : buffer; - char report = 1; - if (mode == CALLBACK_OUTPUT) { - /* we are starting inside the history buffer: matches are suppressed */ - report = !(sp < 0); - } - assert(q->cur); if (mode != NO_MATCHES && q->items[q->cur - 1].location > end) { DEBUG_PRINTF("this is as far as we go\n"); @@ -530,9 +524,8 @@ char nfaExecMcClellan16_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, const u8 *final_look; if (mcclellanExec16_i_ni(m, &s, cur_buf + sp, local_ep - sp, offset + sp, cb, context, single, &final_look, - report ? mode : NO_MATCHES) + mode) == MO_HALT_MATCHING) { - assert(report); *(u16 *)q->state = 0; return 0; } @@ -563,7 +556,6 @@ char nfaExecMcClellan16_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, if (sp == 0) { cur_buf = buffer; - report = 1; } if (sp != ep) { @@ -653,12 +645,6 @@ char nfaExecMcClellan8_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, const u8 *cur_buf = sp < 0 ? hend : buffer; - char report = 1; - if (mode == CALLBACK_OUTPUT) { - /* we are starting inside the history buffer: matches are suppressed */ - report = !(sp < 0); - } - if (mode != NO_MATCHES && q->items[q->cur - 1].location > end) { DEBUG_PRINTF("this is as far as we go\n"); q->cur--; @@ -687,8 +673,7 @@ char nfaExecMcClellan8_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, const u8 *final_look; if (mcclellanExec8_i_ni(m, &s, cur_buf + sp, local_ep - sp, offset + sp, - cb, context, single, &final_look, - report ? mode : NO_MATCHES) + cb, context, single, &final_look, mode) == MO_HALT_MATCHING) { *(u8 *)q->state = 0; return 0; @@ -720,7 +705,6 @@ char nfaExecMcClellan8_Q2i(const struct NFA *n, u64a offset, const u8 *buffer, if (sp == 0) { cur_buf = buffer; - report = 1; } if (sp != ep) { diff --git a/src/nfa/sheng.c b/src/nfa/sheng.c index bbbf1f20..a5f96805 100644 --- a/src/nfa/sheng.c +++ b/src/nfa/sheng.c @@ -405,9 +405,7 @@ char runSheng(const struct sheng *sh, struct mq *q, s64a b_end, const u8 * scanned = cur_buf; char rv; - /* if we're in nomatch mode or if we're scanning history buffer */ - if (mode == NO_MATCHES || - (cur_start < 0 && mode == CALLBACK_OUTPUT)) { + if (mode == NO_MATCHES) { runShengNm(sh, q->cb, q->context, q->offset, &cached_accept_state, &cached_accept_id, cur_buf, cur_buf + cur_start, cur_buf + cur_end, can_die,