]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
Ensure the queue structure is initialised in roseEnginesEod().
authorAlex Coyte <a.coyte@intel.com>
Fri, 24 Feb 2017 04:40:39 +0000 (15:40 +1100)
committerMatthew Barr <matthew.barr@intel.com>
Wed, 1 Mar 2017 02:05:10 +0000 (13:05 +1100)
src/rose/program_runtime.h

index 5b2c829f32a04a3cd4077f74da4eb7b61e781f7f..e883c239e9b8173245050e73770a923122a4140e 100644 (file)
@@ -1209,6 +1209,8 @@ hwlmcb_rv_t roseEnginesEod(const struct RoseEngine *rose,
 
     const u8 *aa = getActiveLeafArray(rose, scratch->core_info.state);
     const u32 aaCount = rose->activeArrayCount;
+    const u32 qCount = rose->queueCount;
+    struct fatbit *aqa = scratch->aqa;
 
     const struct mmbit_sparse_iter *it = getByOffset(rose, iter_offset);
     assert(ISALIGNED(it));
@@ -1221,6 +1223,10 @@ hwlmcb_rv_t roseEnginesEod(const struct RoseEngine *rose,
          qi = mmbit_sparse_iter_next(aa, aaCount, qi, &idx, it, si_state)) {
         DEBUG_PRINTF("checking nfa %u\n", qi);
         struct mq *q = scratch->queues + qi;
+        if (!fatbit_set(aqa, qCount, qi)) {
+            initQueue(q, qi, rose, scratch);
+        }
+
         assert(q->nfa == getNfaByQueue(rose, qi));
         assert(nfaAcceptsEod(q->nfa));