}
}
-static inline int SCACTileStateQueueIsEmpty(StateQueue *q)
+static inline int SCACStateQueueIsEmpty(StateQueue *q)
{
if (q->top == q->bot)
return 1;
return 0;
}
-static inline void SCACTileEnqueue(StateQueue *q, int32_t state)
+static inline void SCACEnqueue(StateQueue *q, int32_t state)
{
int i = 0;
}
}
-static inline int32_t SCACTileDequeue(StateQueue *q)
+static inline int32_t SCACDequeue(StateQueue *q)
{
if (q->bot == STATE_QUEUE_CONTAINER_SIZE)
q->bot = 0;
int32_t state = 0;
int32_t r_state = 0;
- StateQueue q;
- memset(&q, 0, sizeof(StateQueue));
+ StateQueue *q = SCCalloc(1, sizeof(StateQueue));
+ if (q == NULL) {
+ FatalError("Error allocating memory");
+ }
/* Allocate space for the failure table. A failure entry in the table for
* every state(SCACTileCtx->state_count) */
for (aa = 0; aa < ctx->alphabet_size; aa++) {
int32_t temp_state = ctx->goto_table[0][aa];
if (temp_state != 0) {
- SCACTileEnqueue(&q, temp_state);
+ SCACEnqueue(q, temp_state);
ctx->failure_table[temp_state] = 0;
}
}
- while (!SCACTileStateQueueIsEmpty(&q)) {
+ while (!SCACStateQueueIsEmpty(q)) {
/* pick up every state from the queue and add failure transitions */
- r_state = SCACTileDequeue(&q);
+ r_state = SCACDequeue(q);
for (aa = 0; aa < ctx->alphabet_size; aa++) {
int32_t temp_state = ctx->goto_table[r_state][aa];
if (temp_state == SC_AC_TILE_FAIL)
continue;
- SCACTileEnqueue(&q, temp_state);
+ SCACEnqueue(q, temp_state);
state = ctx->failure_table[r_state];
while(ctx->goto_table[state][aa] == SC_AC_TILE_FAIL)
mpm_ctx);
}
}
+ SCFree(q);
}
/*
ctx->alphabet_storage = 256; /* Change? */
}
- StateQueue q;
- memset(&q, 0, sizeof(StateQueue));
+ StateQueue *q = SCCalloc(1, sizeof(StateQueue));
+ if (q == NULL) {
+ FatalError("Error allocating memory");
+ }
for (aa = 0; aa < ctx->alphabet_size; aa++) {
int temp_state = ctx->goto_table[0][aa];
if (temp_state != 0)
- SCACTileEnqueue(&q, temp_state);
+ SCACEnqueue(q, temp_state);
}
- while (!SCACTileStateQueueIsEmpty(&q)) {
- r_state = SCACTileDequeue(&q);
+ while (!SCACStateQueueIsEmpty(q)) {
+ r_state = SCACDequeue(q);
for (aa = 0; aa < ctx->alphabet_size; aa++) {
int temp_state = ctx->goto_table[r_state][aa];
if (temp_state != SC_AC_TILE_FAIL) {
- SCACTileEnqueue(&q, temp_state);
+ SCACEnqueue(q, temp_state);
} else {
int f_state = ctx->failure_table[r_state];
ctx->goto_table[r_state][aa] = ctx->goto_table[f_state][aa];
}
}
}
+ SCFree(q);
}
static void SCACTileClubOutputStatePresenceWithDeltaTable(MpmCtx *mpm_ctx)