void free_test(test_t *t) { if (t == NULL) return; switch (t->type) { case ANYOF: case ALLOF: free_tl(t->u.tl); break; case EXISTS: strarray_free(t->u.sl); break; case SIZE: case SFALSE: case STRUE: break; case HASFLAG: case HEADER: free(t->u.h.comparator); strarray_free(t->u.h.sl); strarray_free(t->u.h.pl); break; case ADDRESS: case ENVELOPE: free(t->u.ae.comparator); strarray_free(t->u.ae.sl); strarray_free(t->u.ae.pl); break; case BODY: free(t->u.b.comparator); strarray_free(t->u.b.content_types); strarray_free(t->u.b.pl); break; case NOT: free_test(t->u.t); break; case DATE: free(t->u.dt.header_name); /* fall-through */ case CURRENTDATE: free(t->u.dt.comparator); free(t->u.dt.zone); strarray_free(t->u.dt.kl); break; } free(t); }
void free_automaton(automaton* A) { int* final_states = A->final_states; s_table_element* symbol_table = A->symbol_table; state* state_table = A->state_table; int state_c = A->states; free(final_states); free(symbol_table); for(int i = 0; i < state_c; ++i) { free_tl(&state_table[i]); } free(state_table); return; }
void free_test(test_t *t) { if (t == NULL) return; switch (t->type) { case ANYOF: case ALLOF: free_tl(t->u.tl); break; case EXISTS: strarray_free(t->u.sl); break; case SIZE: case SFALSE: case STRUE: break; case HEADER: strarray_free(t->u.h.sl); strarray_free(t->u.h.pl); break; case ADDRESS: case ENVELOPE: free(t->u.ae.comparator); strarray_free(t->u.ae.sl); strarray_free(t->u.ae.pl); break; case BODY: strarray_free(t->u.b.content_types); strarray_free(t->u.b.pl); break; case NOT: free_test(t->u.t); break; } free(t); }
void free_test(test_t *t) { if (t == NULL) return; switch (t->type) { case ANYOF: case ALLOF: free_tl(t->u.tl); break; case EXISTS: free_sl(t->u.sl); break; case SIZE: case SFALSE: case STRUE: break; case HEADER: free_sl(t->u.h.sl); free_pl(t->u.h.pl, t->u.h.comptag); break; case ADDRESS: free_sl(t->u.ae.sl); free_pl(t->u.ae.pl, t->u.ae.comptag); break; case NOT: free_test(t->u.t); break; } free(t); }