]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
roseEnginesEod: trust the queue structure
authorJustin Viiret <justin.viiret@intel.com>
Tue, 14 Jun 2016 04:25:52 +0000 (14:25 +1000)
committerMatthew Barr <matthew.barr@intel.com>
Fri, 8 Jul 2016 00:55:36 +0000 (10:55 +1000)
src/rose/program_runtime.h

index 4537c55b36b34717242d2f4f54b4ba858242a523..860f7599cce9e18d280ff18f56dc2c21becb3efd 100644 (file)
@@ -826,22 +826,18 @@ hwlmcb_rv_t roseEnginesEod(const struct RoseEngine *rose,
     for (u32 qi = mmbit_sparse_iter_begin(aa, aaCount, &idx, it, si_state);
          qi != MMB_INVALID;
          qi = mmbit_sparse_iter_next(aa, aaCount, qi, &idx, it, si_state)) {
-        const struct NfaInfo *info = getNfaInfoByQueue(rose, qi);
-        const struct NFA *nfa = getNfaByInfo(rose, info);
-
         DEBUG_PRINTF("checking nfa %u\n", qi);
-        assert(nfaAcceptsEod(nfa));
-
-        char *fstate = scratch->fullState + info->fullStateOffset;
-        const char *sstate = scratch->core_info.state + info->stateOffset;
+        struct mq *q = scratch->queues + qi;
+        assert(q->nfa == getNfaByQueue(rose, qi));
+        assert(nfaAcceptsEod(q->nfa));
 
         if (is_streaming) {
             // Decompress stream state.
-            nfaExpandState(nfa, fstate, sstate, offset, key);
+            nfaExpandState(q->nfa, q->state, q->streamState, offset, key);
         }
 
-        if (nfaCheckFinalState(nfa, fstate, sstate, offset, roseReportAdaptor,
-                               roseReportSomAdaptor,
+        if (nfaCheckFinalState(q->nfa, q->state, q->streamState, offset,
+                               roseReportAdaptor, roseReportSomAdaptor,
                                scratch) == MO_HALT_MATCHING) {
             DEBUG_PRINTF("user instructed us to stop\n");
             return HWLM_TERMINATE_MATCHING;